Xcode不再向我显示弃用警告

时间:2015-02-24 21:53:27

标签: ios objective-c xcode git deprecation-warning

我继承了一个针对iOS6 +的iOS项目。几个星期前,我把它移到Xcode 6并清理了所有的警告。一个这样的警告是:

'UITextAttributeTextShadowColor' is deprecated: first deprecated in iOS 7.0 - Use NSShadowAttributeName with an NSShadow instance as the value

我对此的修复使用了NSShadowAttributeName,但我做得不正确,导致应用程序在执行期间的某个时刻崩溃。几个星期后,当我发现时,我暂时恢复了旧代码。但是,当我恢复旧代码时,弃用警告未返回。我一直无法弄清楚原因,并想补救一下 - 它警告我警告没有显示

对于它的价值,在代码的某些部分我需要保持弃用警告,因为需要维护对iOS 6的支持。在这些情况下,iOS 6和iOS 7+设备有单独的代码和iOS 6代码包含:

SILENCE_IOS7_DEPRECATION(

// iOS 6 code here

);

(见https://stackoverflow.com/a/26564750/3352624)这使用:

#define SILENCE_DEPRECATION(expr)                                   \
do {                                                                \
_Pragma("clang diagnostic push")                                    \
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")   \
expr;                                                               \
_Pragma("clang diagnostic pop")                                     \
} while(0)

#define SILENCE_IOS7_DEPRECATION(expr) SILENCE_DEPRECATION(expr)
#define SILENCE_IOS8_DEPRECATION(expr) SILENCE_DEPRECATION(expr)

我选择不调整Xcode设置并关闭大量代码的警告。

所以我很困惑为什么当我将代码恢复到以前的状态时,弃用警告不再显示。

以下是我尝试的内容:

  1. 从我的代码中删除了对SILENCE_DEPRECATION宏的所有引用
  2. 目标
  3. Deprecated Functions下已验证Build Settings
  4. 已确认我的Base SDK已设为Latest iOS (8.1)且我的iOS Deployment Target已设为iOS 6.0
  5. 在目标
  6. -Weverything下为Other Warnings Flags添加了Build Settings
  7. 在我的任何更改
  8. 之前,从git中检出了我的工作区的旧版本
  9. 退出并重新启动Xcode 6
  10. 尝试过Xcode 5
  11. 重新启动计算机,然后启动Xcode
  12. 这些都没有导致弃用警告回来。任何想法我接下来应该尝试什么?

1 个答案:

答案 0 :(得分:7)

我意识到这是一个非常古老的主题,但我想我会发布一个答案以防其他人找到这个帖子。

它还取决于目标的部署目标设置(即,在" TARGETS"下,点击应用并选择"一般"在顶部,查看&#34 ;部署信息""部署目标"部分。例如,如果我将部署目标设置为7.1并使用在iOS 8中弃用的功能,我将不会收到警告。但是,如果我将部署目标设置为8.x或9.0,我将收到有关这些功能的警告。