Xcode/iOS - 摆脱特定常量的弃用警告?

Wil*_*sch 7 xcode warnings objective-c deprecated

我的项目中有一些不赞成使用的常量.他们需要留下来.我不想被警告他们,但是如果其他已弃用的常量稍后会出现在我的项目中,我们希望得到警告.

Apple的标题声明如下:

extern NSString * const NameOfStringConstant __OSX_AVAILABLE_BUT_DEPRECATED(version availability info here)
Run Code Online (Sandbox Code Playgroud)

我怎样才能使警告静音?

沉默警告的方法已过时相关答案
相关答案沉默有关弃用的字符串转换警告这里

Rok*_*arc 24

我知道这是一个古老的话题,但今天我正在处理同样的烦恼.

示例:您希望摆脱恼人的弃用警告,但仅仅[[UIDevice currentDevice] uniqueIdentifier]]因为您最有可能希望在TestFlight的开发阶段使用它.如果你错误地使用了其他一些弃用的声明,你仍然希望编译器警告你.

我喜欢sarfata的回答:它完成了这项工作.但是政治上更正确的方式可用:

以下食谱来自The Goo Software Blog.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    [TestFlight setDeviceIdentifier:[[UIDevice currentDevice] uniqueIdentifier]];
#pragma clang diagnostic pop
Run Code Online (Sandbox Code Playgroud)

确保在构建分发之前注释掉这一行.或者只是使用预处理器宏从发布版本中排除这些行.


jer*_*jer 1

这个问题的正确答案是不使用已弃用的常量。检查文档以获取立即完成某些任务的推荐方法。对于已弃用的方法/常量/无论什么,如果您愿意,几乎总是有一个指向“替换”的链接。用它来代替。这样,当这些永远消失时,您的代码不会神秘地中断,但您的用户仍然拥有针对旧 sdk 构建的版本,现在他们的代码崩溃了,或者更糟的是,做了奇怪的事情。

  • 我必须使用常量,因为早期版本的 iOS 没有未弃用的常量。我会检查是否存在未弃用的版本,并在可用时使用它。否则,我必须依靠已弃用的常量。Apple 的示例代码也是采用同样的方式。 (6认同)
  • 很好的例子是dismissModalViewControllerAnimated:这在iOS 6.0 API中已被弃用,但替代方案仅在iOS 5 API中引入。由于提交与 iPhone 5 兼容的应用程序需要使用 iOS 6 API 进行编译,因此您必须忽略这些警告或停止支持 iOS 4.x(这相当严厉) (2认同)