苹果公司何时移除被标记为弃用的方法/API?

10

苹果什么时候会移除被标记为“已弃用”的方法/API?在标记后的2或3个版本之后,还是永远不会移除?


1
当他们想要的时候。 - Hot Licks
他们可能会在某些特定版本中保留它们,具体数字我不清楚。 - The Muffin Man
通常情况下,只要该功能仍然得到支持的“最年轻”版本中还未被弃用,该功能将一直存在。但是在某种意义上,即使是在版本N中被弃用的功能,在同时使用版本N+M中的新功能时也可能无法正常工作。请记住,如果您在已弃用该功能的版本中使用该功能,则当该功能被撤回以用于后续版本时,该版本中对该功能的支持也可能会消失。 - Hot Licks
1个回答

8

在常见用法中,deprecation仅意味着不再建议使用该功能,并且可能会在以后的版本中完全删除。

维基百科 - Deprecation

尽快停止使用被弃用的功能是一个好习惯,因为您无法保证它们将得到多长时间的支持。有时候可能只是下一个版本,或者很多个版本之后才会移除。

通过快速搜索Apple和Deprecation,可以找到此API参考,其中一项功能已被弃用,但至少在一个主要操作系统版本上存活了下来。

https://developer.apple.com/library/ios/documentation/uikit/reference/UIDevice_Class/DeprecationAppendix/AppendixADeprecatedAPI.html

所以,苹果何时会移除它们?他们随时都可以这样做,因此不要现在构建依赖它们的东西,并尽可能将旧代码迁移到其他功能上。编译器通常会在使用被弃用特性时抛出警告。


谢谢!特别是对于这个示例,苹果在一个主要版本发布后真的删除了一个已弃用的API。 - Ming Zhu
是的,我完全同意我们应该用最新对应/替代物替换废弃的API,然而,保持向后兼容性需要额外的工作,因为大多数替代API只能在较新的iOS版本中使用。使用宏来确保不同的iOS版本使用不同的API可以避免这个问题,但会使你的代码变得混乱。有没有一个好的方法来解决这个问题? - Ming Zhu
记住这只是一个非常快速的例子。我可以想象有些已经过时的方法在几个主要版本中仍然存在。至于该怎么做?好问题。我没有很好的答案,因为这不是我在开发生涯中需要处理的事情。在猜测之前,我会去搜索看看其他人都做了什么。 - Twisted Mentat
这个问题不是,“在iOS中,deprecation的意思是什么,我应该怎么做?” 而是他们何时会删除一个已弃用的方法。 这个答案关注第一个未提问的问题,虽然它提供了第二个问题的一个例子,但除非它至少提供一个更大的样本并试图提取一个规则,否则我不确定是否应将其标记为“正确”。 - AlterEgo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接