【问题标题】:deprecated in iOS 9, compatibility?在 iOS 9 中已弃用,兼容性?
【发布时间】:2015-09-16 23:09:50
【问题描述】:

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

  1. UIAlertView 已弃用,请使用 UIAlertController
  2. ABAddressBookRef 已弃用,请使用 CNContactStore ...
  3. setStatusBarStyle:animated 已弃用,请使用 [UIViewController preferredStatusBarStyle]

还有其他... 好吧,我想保持与iOS 9 和至少iOS 8 的兼容性。

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

如果我使用UIAlertController iOS 8,它可以工作吗?

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

【问题讨论】:

  • 将您的部署目标设置回 iOS 7.0,您会没事的(消息会消失)。只要确保您有条件地使用 iOS 8 或 9 API,它就不会在 iOS 7 上崩溃。
  • @rmaddy 感谢您的回复!因此,如果我的目标是 iOS 8 和 iOS 9,如果我使用 UIAlertController,代码是否适用于两者?
  • 是的,因为UIAlertController 是在 IOS 8 中添加的。
  • 仅供参考 - 您需要阅读 iOS 文档中的“SDK 兼容性指南”。
  • @rmaddy 好的,但是 CNContactStore 是在 iOS 9 中引入的,所以你知道它是否适用于 iOS 8 吗?

标签: ios xcode compatibility deprecated


【解决方案1】:

如果您不再针对旧版本的 iOS,那么建议您更新已弃用的代码。不过,您不必绝对这样做,Apple 的 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

【讨论】:

    【解决方案2】:

    “已弃用”是指以下至少一项:

    • 这个 API 还没有消失,但它可能会在未来出现,或者在未来的平台/技术上。例如,在 iOS 8 之前弃用的所有 API 在 Swift 中都不可用。
    • 此 API 有更好的替代方案,随着平台的变化,旧的 API 可能无法继续执行您需要的所有操作。例如,尽管 AssetsLibrary 已被弃用,但它仍然存在,但它不提供对 iCloud 照片或 Live Photos 的访问——对于那些需要它替代 Photos 框架的人。

    这些是在针对不推荐使用 API 的操作系统版本时需要考虑的事项

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

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

    【讨论】:

    • 不错的答案! :) 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多