Xcode不再向我显示弃用警告

dav*_*vew 4 git xcode objective-c ios deprecation-warning

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

'UITextAttributeTextShadowColor' is deprecated: first deprecated in iOS 7.0 - Use NSShadowAttributeName with an NSShadow instance as the value
Run Code Online (Sandbox Code Playgroud)

我对此的修复使用了NSShadowAttributeName,但我做得不正确,导致应用程序在执行期间的某个时刻崩溃.几个星期后,当我发现时,我暂时恢复了旧代码.但是,当我恢复旧代码时,弃用警告没有回来.我一直无法弄清楚为什么并且想要解决这个问题 - 它警告我警告没有显示出来.

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

SILENCE_IOS7_DEPRECATION(

// iOS 6 code here

);
Run Code Online (Sandbox Code Playgroud)

(参见/sf/answers/1859532531/)这用于:

#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)
Run Code Online (Sandbox Code Playgroud)

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

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

这是我尝试过的:

  1. 从我的代码中删除了对SILENCE_DEPRECATION宏的所有引用
  2. 验证Deprecated Functions是根据Build Settings目标
  3. 验证我Base SDK的设置为Latest iOS (8.1),我iOS Deployment Target的设置为iOS 6.0
  4. 为目标添加了-Weverythingto Other Warnings FlagsunderBuild Settings
  5. 在我的任何更改之前,从git中检出了我的工作区的旧版本
  6. 退出并重新启动Xcode 6
  7. 试过Xcode 5
  8. 重新启动我的电脑,然后启动Xcode

这些都没有导致弃用警告回来.任何想法我接下来应该尝试什么?

guy*_*zda 7

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

它还取决于Target的Deployment Target设置(即,在"TARGETS"下,单击应用程序并选择顶部的"General",查看"Deployment Info"部分中的"Deployment Target").例如,如果我将部署目标设置为7.1并使用在iOS 8中弃用的功能,我将不会收到警告.但是,如果我将部署目标设置为8.x或9.0,我将收到有关这些功能的警告.

  • 谢谢@guywithmazda,我刚刚回去测试了这个。你是对的,如果我将部署目标从 6.0 调整到 8.0,弃用警告会再次出现。我仍然有点困惑,但为什么我之前会看到 iOS 7 弃用警告,因为该项目的部署目标始终为 6.0。您是否知道 Xcode 的任何更改会影响此问题? (2认同)