我正在开发一个即将启动但使用ABAddressBook框架的应用程序。由于ABAddressBook在iOS9中不受欢迎,我是否需要检查用户的iOS版本,并为预iOS9用户使用ABAddressBook,为iOS9用户使用CNContact?
其他人怎么处理这件事?我以前从没遇到过这样的情况。
发布于 2015-08-27 16:08:55
我也一直在处理和研究这个问题,我选择的是您的建议;查看用户的iOS版本,做以下事情:
NSString *version = [[UIDevice currentDevice] systemVersion];
BOOL isVersion8 = [version hasPrefix:@"8."];
BOOL isVersion7 = [version hasPrefix:@"7."];
//......continuing基于您决定支持的应用程序版本。
然后,我进行检查,要么在iOS 9之前使用Addressbook框架,要么使用iOS 9及更高版本的联系人框架。
if(isVersion7 || isVersion8){
//Use AddressBook
}
else{
//Use Contacts
}这是我能想到的最好的方法来处理这个贬义的事务.
发布于 2015-09-30 09:16:34
不赞成并不意味着被删除。只需将两个框架的链接作为可选的,并开始设计能够处理这两个框架的数据工作流。此外,请注意,CNContact是新的,充满了错误。
一旦你认为你的应用程序是重构的,iOS进化到9.1,就给它开个绿灯
如何知道系统是否支持功能
1)检查类是否存在
if(NSClassFromString(@"CNContact")) {
// Do something
}对于弱链接类,直接向类发送消息是安全的。值得注意的是,这适用于没有显式链接为"Required“的框架。对于缺少的类,表达式的计算结果为零。
2)
#ifned NSFoundationVersionNumber_iOS_9
#def NSFoundationVersionNumber_iOS_9 NUMBER
#endif
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_9) {
// Use address book
} else {
// Use contact framework
}在模拟器中运行应用程序以查找NSFoundationVersionNumber常量
发布于 2015-12-13 14:41:19
if #available(iOS 9, *)
{
// iOS 9 - CNContact
}
else
{
// iOS 8 - ABAddressBook
}这是检查的正确方法。
https://stackoverflow.com/questions/32003250
复制相似问题