代码之家  ›  专栏  ›  技术社区  ›  Vjardel

iOS 9中已弃用,兼容吗?

  •  2
  • Vjardel  · 技术社区  · 9 年前

    我已经用Xcode 7升级了我的Xcode项目 Objective-C . 当我瞄准目标时 iOS 9.0 在部署目标中,我有36个警告:

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

    还有其他。。。 嗯,我想保持与 iOS 9 至少 iOS 8 .

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

    如果我使用 UIAlert控制器 iOS 8,是否有效?

    我最好做什么?使用已弃用的代码还是用新代码替换?

    2 回复  |  直到 9 年前
        1
  •  3
  •   SomeGuy    9 年前

    如果您不再以旧版本的iOS为目标,则建议更新已弃用的代码。尽管你不一定要这样做,苹果的SDK中仍然正式支持被弃用的方法,但有一天苹果可能会删除这些方法。

    以下是苹果公司关于贬低的说法:

    苹果不时会在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
  •  2
  •   rickster    9 年前

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

    • 这个API还没有消失,但它可能在未来,或者在未来的平台/技术上。例如,iOS 8之前弃用的所有API在Swift中都不可用。
    • 这个API有一个更好的替代方案,而且随着平台的变化,旧的API可能无法满足您的需要。例如,尽管AssetsLibrary已被弃用,但它仍然存在,但它不为需要替换Photos框架的人提供对iCloud照片或Live Photos的访问。

    这些都是需要考虑的问题 当目标是不推荐使用API的OS版本时 .

    然而 弃用警告基于项目的最低部署目标。 如果你告诉Xcode你想为iOS 7和更高版本构建,你不会看到从iOS 8或iOS 9开始就被弃用的API的警告。

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