【问题标题】:Do I have to handle deprecation when I'm supporting a lower iOS-version?当我支持较低的 iOS 版本时,我是否必须处理弃用?
【发布时间】:2016-03-15 13:27:32
【问题描述】:

例如,假设我的 iOS 应用程序支持到 iOS 7.0,我想发出警报。在 iOS 7 中,我会使用 UIAlertView。在 iOS 8/9 中,这已被 UIAlertController 弃用。我是否必须检查if currentVersion > iOS7,然后创建两个警报,一个用于iOS7 的alertView 和一个用于iOS8+ 的alertController?还是可以在 iOS7 应用中使用 UIAlertView,即使它最终会在 iOS9+ 设备上运行?

我是否需要检查当前的 iOS 版本,并在像这样的简单问题中实现多个对象(每个版本一个)?

【问题讨论】:

  • 您可能会发现有用的市场份额统计数据:david-smith.org/iosversionstats
  • 基本上,您需要担心在您用于编译项目的实际 SDK 中已弃用的所有内容。

标签: ios


【解决方案1】:

弃用只是说明未来版本中可能会删除某项功能。不过,已弃用的类或方法仍然有效。

因此,您可以继续使用UIAlertView,并面临在未来的 iOS 版本中崩溃的风险。它仍然可以在 iOS 9 上运行。但不能保证它会继续在 iOS 10 上运行。

这里最好的解决方案是check whether UIAlertController is available at runtime。如果是,请使用该类作为警报,否则回退到 UIAlertView

您通常检查 iOS 版本!最好检查一个方法或类是否可用,除非在极少数情况下,Apple 明确 告诉您检查 iOS 版本:当一个被认为是私有的方法被公开时,就会发生这种情况苹果。

【讨论】:

  • 经常被弃用的功能会“工作”,但它们会有问题
  • @BradThomas:你的意思是什么问题?在UIAlertView 的情况下,那个东西总是有问题,这就是为什么它被UIAlertController 成功。除此之外,我不知道有任何已弃用的类或方法改变了其行为(当然,直到它被删除)。
  • 在我们的项目中,升级到 iOS8 导致 UIAlertView 出现异常行为。 stackoverflow.com/questions/26228729/…等问题
  • @BradThomas:感谢分享!这真的是我第一次听说过时的类/方法存在问题。
  • @DarkDust 但是由于我的项目支持 iOS 7,我实际上并没有收到弃用。我只在创建新项目时看到弃用,仅支持到 iOS 8 或 9。这是否意味着我可能在不知道的情况下使用大量弃用的代码(在 iOS7 之后已弃用)它?有没有一种快速的方法来分析我的项目中的代码以查找在较新的 iOS 版本中不推荐使用的对象和方法(即显示在 iOS 7 中不推荐使用但可能导致 iOS8、9、10 等问题的弃用警告) .).
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 2020-09-20
  • 1970-01-01
相关资源
最近更新 更多