我繼承了一個面向iOS6 +的iOS項目。幾個星期前,我將它移至Xcode 6並清理了所有警告。一個這樣的警告是:Xcode不再顯示已棄用的警告
'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設置,關閉警告對於大量的代碼。
所以我很困惑,爲什麼當我將代碼恢復到之前的狀態時,棄用警告不再顯示。
這是我已經試過:
- 刪除從我的代碼
- 驗證
Deprecated Functions
到SILENCE_DEPRECATION宏觀的所有引用是Build Settings
下目標 - 驗證了我的
Base SDK
設爲Latest iOS (8.1)
和我的iOS Deployment Target
設置爲iOS 6.0
- 將
-Weverything
添加到Other Warnings Flags
Build Settings
下目標 - 經過了一箇舊版本的混帳我的工作區這是以前我的任何變化
- 退出並重新啓動的Xcode 6
- 試過的Xcode 5
- 重新啓動我的電腦,然後就開始的Xcode
這些事情都不會導致棄用警告恢復。任何想法接下來我應該嘗試什麼?
對於項目本身呢? – Chase 2015-02-24 22:13:57
您可以更改目標和項目的警告設置。驗證兩者都已啓用。 – Chase 2015-02-24 22:16:59
@相傳謝謝,我只是檢查。對於目標和項目,「棄用函數」設置爲「是」。將'Build Settings'放在'Levels'模式下顯示它也解析爲Yes。 – davew 2015-02-25 00:50:03