我如何基于iOS版本定义实例变量,例如CNContactStore,自从已弃用该实例变量以来iOS9.0,就不
可用了ABAddressBook,9.0但是我想根据iOS版本创建两个变量。我的方法是
if #available(iOS 9.0, *) {
var addressBookRef: ABAddressBook? = nil
} else {
var contactStore : CNContactStore? = nil
}
Run Code Online (Sandbox Code Playgroud)
如果我在方法主体中执行此操作,则工作正常,但我希望对其进行全局定义,并且可以在整个类中进行访问,但如果这样做就给我错误
@available(iOS 9.0, *)
var contactStore : CNContactStore? = nil
Run Code Online (Sandbox Code Playgroud)
需要一些建议。我该如何实现。我不知道是否发布@available(iOS 9.0, *),它会导致我的应用在iOS 8.x或更低版本上崩溃吗?
在那种情况下,我将使用模仿ABAddressBook和CNContactStore行为的包装器类,因此对它们方法的所有调用都应通过此类进行。
快速查找所需内容的方法可能是这样的:
class ContactWrapper {
var contactBook: NSObject?
init() {
if #available(iOS 9, *) {
contactBook = CNContactStore.init()
} else {
contactBook = ABAddressBookCreate().takeRetainedValue() as? NSObject
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |