我继承了一个针对 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 设置并关闭大量代码的警告。
所以我很困惑为什么当我将代码恢复到以前的状态时不再显示弃用警告。
这是我尝试过的:
- 从我的代码中删除了对 SILENCE_DEPRECATION 宏的所有引用
- 已验证
Deprecated Functions
为Build Settings
目标 - 已验证我
Base SDK
的设置为Latest iOS (8.1)
并且我iOS Deployment Target
的设置为iOS 6.0
-Weverything
为目标添加Other Warnings Flags
了Build Settings
- 从 git 检查了我的工作区的旧版本,这是在我进行任何更改之前
- 退出并重新启动 Xcode 6
- 试过 Xcode 5
- 重新启动我的计算机,然后启动 Xcode
这些事情都没有导致弃用警告再次出现。有什么想法我接下来应该尝试什么?