Xcode弃用警告并不总是出现

时间:2015-04-23 17:05:18

标签: ios objective-c xcode deprecated

似乎Xcode(6.3)中的弃用警告仅在开发目标之前弃用方法时出现。我的开发目标是7.0,基础SDK是8.3。在iOS 7.0之前弃用的方法会向我发出警告,但如果在iOS 8.0中弃用该方法则不会。例如:

[self.mainController didAnimateFirstHalfOfRotationToInterfaceOrientation:UIInterfaceOrientationPortrait];
[self.mainController willAnimateRotationToInterfaceOrientation:UIInterfaceOrientationPortrait duration:1];

上面代码的第一行给出了警告(在iOS 5.0中弃用的方法)

第二行不会产生任何警告(在iOS 8.0中弃用的方法)

我认为这是不正确的,因为我错过了这个方法在iOS 8.0中被弃用的事实,因此我们的应用程序的真实用户(使用iOS 8.3)受到影响。如果我有警告,我会提前知道。

这是正常行为还是错误?

1 个答案:

答案 0 :(得分:5)

  

似乎Xcode(6.3)中的弃用警告仅在开发目标

之前弃用方法时出现

好吧,想一想:

  • 假设您的部署目标是iOS 7.

  • 假设在iOS 8中不推荐使用某种方法。

  • 假设您使用新的iOS 8方法替换它。

现在应用程序将在iOS 7上崩溃,因为新的iOS 8 是一种新的iOS 8方法 - 它在iOS 7中不存在。

因此,如果要在两个系统上向后兼容,则可能必须至少使用某些方法,这些方法在以后的系统中已弃用,以便在早期系统上运行。因此,没有必要警告你这些。错误将是另一种方式 - 如果编译器警告你所有这些!

  

我们的应用程序的真实用户(使用iOS 8.3)受到影响

可能不是。 "已过时"并不意味着"破碎"或者"不再有效"。这意味着"弃用"。该方法继续有效。 (直到它没有,但还没有发生。)