在iOS 9中弃用,兼容性?

时间:2015-09-16 23:09:51

标签: ios xcode compatibility deprecated

我已使用Xcode 7升级了我的Xcode项目。我使用Objective-C。 当我在部署目标中定位iOS 9.0时,我发出了36条警告:

  1. UIAlertView已弃用,请使用UIAlertController
  2. ABAddressBookRef已弃用,请使用CNContactStore ...
  3. setStatusBarStyle:animated已弃用,请使用[UIViewController preferredStatusBarStyle]
  4. 和其他一些...... 好吧,我希望与iOS 9和至少iOS 8保持兼容。

    我是否必须忽略这些警告以保持与不同操作系统的兼容性?

    如果我使用{8} iOS 8,它有效吗?

    我做的最好的事情是什么?使用已弃用或替换为新代码?

2 个答案:

答案 0 :(得分:3)

如果您不再定位旧版iOS,则建议您更新已弃用的代码。尽管如此,苹果公司的SDK仍然正式支持不推荐使用的方法,但有一天Apple可能会删除这些方法。

以下是Apple关于弃用的说法:

  

Apple不时会向API添加弃用宏以表明   这些API不应再用于主动开发。当一个   贬值发生,它不是一个直接的生命终结   指定的API。相反,它是宽限期的开始   从那个API过渡到更新更现代的   更换。不推荐使用的API通常保持存在且可用于   系统在发布后的合理时间内发布   他们被弃用了。然而,他们的积极发展停止了   API只接收微小的变化 - 以适应安全补丁或   修复其他关键错误。弃用的API可能会被完全删除   来自未来版本的操作系统。

     

作为开发人员,避免使用已弃用的API非常重要   在您的代码中尽快。 至少要编写新代码   绝不应该使用弃用的API。如果你有现有的代码   使用已弃用的API,尽快更新该代码。   幸运的是,编译器在发现使用时会生成警告   您的代码中已弃用的API,您可以使用这些警告   跟踪并删除对这些API的所有引用。

https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS7.html

答案 1 :(得分:2)

"已过时"指至少以下之一:

  • 此API尚未推出,但未来或未来的平台/技术可能尚未推出。例如,在iOS 8在Swift中不可用之前,所有API都已弃用。
  • 这个API有一个更好的替代方案,旧的可能不会随着平台的变化而继续做你需要的一切。例如,AssetsLibrary即使被弃用也仍然存在,但它不能提供对iCloud照片或实时照片的访问权限 - 对于那些需要替换照片框架的人来说。

在定位不推荐使用API​​的操作系统版本时,需要考虑的事项

但是,弃用警告基于您项目的最低部署目标。如果您告诉Xcode您要为iOS 7及更高版本构建,则您不会看到警告适用于iOS 8或iOS 9时弃用的API。

如果要部署回较旧的最低操作系统目标,但使用较新操作系统的功能,则需要在使用较新功能的代码中进行可用性检查。有关兼容性/可用性和弱链接的一般情况,请参见Apple's docs,和/或对于Swift,请参见Checking API Availability