Xcode不再显示我已弃用的警告。

4

我接手了一个目标为iOS6+的iOS项目。几周前,我将其移植到Xcode 6并清理了所有警告。其中一个警告是:

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

我的解决方法使用了 NSShadowAttributeName,但我没有正确操作导致 App 在执行的某个时刻崩溃了。几周后发现问题后,我暂时还原回旧代码。然而,当我还原回旧代码时,弃用警告并没有重新出现。我一直无法找出原因并希望解决这个问题 - 警告不再显示让我感到不安
值得一提的是,在某些代码段中,由于需要维护对 iOS 6 的支持,我需要消除弃用警告。在这些情况下,有单独的 iOS 6 和 iOS 7+ 设备的代码,并且 iOS 6 代码被包围在:
SILENCE_IOS7_DEPRECATION(

// iOS 6 code here

);

(参见https://dev59.com/GnE85IYBdhLWcg3wwWet#26564750)这使用了:

#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. 确认目标下的“Build Settings”中已启用“Deprecated Functions” 3. 确认我的“Base SDK”设置为“Latest iOS (8.1)”,我的“iOS Deployment Target”设置为“iOS 6.0” 4. 在目标的“Build Settings”下添加了-Weverything到“Other Warnings Flags” 5. 检出旧版本的workspace,该版本在我的任何更改之前 6. 退出并重新启动Xcode 6 7. 尝试了Xcode 5 8. 重启电脑,然后启动Xcode 这些都没有导致过时警告回来。您有什么其他建议吗?

那么对于项目本身呢? - Chase
您可以更改目标和项目的警告设置。请验证两者均已启用。 - Chase
@Chase 谢谢,我刚刚检查了一下。已弃用函数在目标和项目中都设置为是。将构建设置放在级别模式下,也显示为已解决。 - davew
1个回答

7

我知道这是一个相当老的帖子,但我想发表一个答案,以防其他人找到这个帖子。

这还取决于目标(即在“TARGETS”下单击应用程序,选择顶部的“通用”,在“部署信息”部分查找“部署目标”)的部署目标设置。例如,如果我的部署目标为7.1,并使用在iOS 8中已被弃用的函数,则不会收到警告。但是,如果我将部署目标设置为8.x或9.0,则会收到这些功能的警告。


2
谢谢 @guywithmazda,我刚刚回去测试了一下。你是对的,如果我将部署目标从6.0调整为8.0,那么弃用警告会再次出现。但我还有点困惑,因为即使项目始终将部署目标设置为6.0,我以前也看到了iOS 7的弃用警告。你知道是否有任何影响这个问题的Xcode变化吗? - davew
抱歉,我不知道。这可能是Xcode新版本中的新行为,但这只是猜测。 - guywithmazda

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