前言
首先來認(rèn)識一下#pragma clang diagnostic ignored的語法組成:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "命令"
<代碼區(qū)間>
#pragma clang diagnostic pop
其中"命令"一般以-W開頭,格式為"-W****",例如"-Wnonnull"
既然叫<代碼區(qū)間>,那這個代碼可以是局部的,也可以是全局的,即既可以在方法內(nèi),也可以包含整個方法。
使用場景
在開發(fā)過程中,總是不能避免??警告的存在,而這些警告大部分情況下并不影響項目的編譯和運行,也不影響整個業(yè)務(wù)代碼的功能實現(xiàn),但是警告多了就會有壓迫感,甚至?xí)岄_發(fā)者心生質(zhì)疑和反感,然而#pragma clang diagnostic ignored指令可以消除這些顧慮,但前提是要確保這些指令不會影響相關(guān)業(yè)務(wù)的實現(xiàn),不然會適得其反、因小失大、得不償失。
常見場景
1.忽略參數(shù)非空警告"-Wnonnull"


2.忽略方法棄用警告"-Wdeprecated-declarations"


3.忽略類型不匹配警告"-Wincompatible-pointer-types"(以下例子為錯誤示例,現(xiàn)實開發(fā)中請勿模仿)


4.忽略未使用的變量警告"-Wunused-variable"


5.忽略未初始化值的警告"-Wuninitialized"


6.忽略循環(huán)引用警告"-Warc-retain-cycles"(示例有風(fēng)險,請勿模仿)


7.忽略缺少default(缺少case)警告"-Wswitch"


8.忽略有效版本限制警告"-Wunguarded-availability"


9.忽略方法未申明警告"-Wundeclared-selector"


10.忽略方法未知(內(nèi)存泄漏)警告"-Warc-performSelector-leaks"


11.忽略代碼永不執(zhí)行警告"-Wunreachable-code"


以上示例基本都是在實際開發(fā)過程中大概率會遇到的場景情況,但也只是冰山一角,隨著接手的項目越多越大,開發(fā)成員的不斷壯大,以上的示例可能就會淡化在視野之內(nèi),新的場景也會接踵而至,再者拋開場景不說,我們更沒有那個能力將所有的
命令裝進大腦牢記心里,所以要想讓盲區(qū)不再盲區(qū),警告不再警告,那么客官請往下看。
另外提醒一句:示例有風(fēng)險,模仿須謹(jǐn)慎,萬事請三思而后行。
快速定位命令
如何在Xcode中快速定位到我們想要的命令呢?下面我們以Unused variable 'unusedVariable'(未使用的變量)警告為例,通過Xcode快速定位得到我們想要的命令。
1.選擇Xcode編輯器窗口導(dǎo)航欄Reports菜單,如下圖藍(lán)色選中態(tài)圖標(biāo)項,在左側(cè)Build和Run記錄列表中都可查看到??警告記錄。

2.選擇并點擊左側(cè)的警告記錄,在窗口瀏覽區(qū)找到
unusedVariable關(guān)鍵字,或者先尋找出現(xiàn)警告的文件名如例子中出現(xiàn)警告的文件名為ViewController.m然后在此文件名下拉列表中再找unusedVariable關(guān)鍵字。
3.找到對應(yīng)警告后,點擊對應(yīng)警告瀏覽區(qū)右側(cè)展開按鈕,找到關(guān)鍵字
unusedVariable,內(nèi)容太多請向下滾動瀏覽,關(guān)鍵字一般都在內(nèi)容底部,且會以特定底色標(biāo)記,標(biāo)記之后以[]包含-W開頭的即為我們要找的命令。
反向定位??警告出處
右鍵瀏覽區(qū)??警告項,再點擊下拉菜單Show In Timeline選項,進入警告出處所在文件的預(yù)覽窗口(可以編輯),可以拖動預(yù)覽窗口上邊界鋪滿瀏覽區(qū),或者雙擊瀏覽區(qū)??警告項打開警告出處所在的文件并進行編輯。

回顧
前文我們提到“<代碼區(qū)間>這個代碼可以是局部的,也可以是全局的,即既可以在方法內(nèi),也可以包含整個方法。”,所以我們可以這樣寫


那么問題來了,如果是組合??警告,代碼塊中出現(xiàn)多個不同類型的??,此時應(yīng)該如何處理呢?????這里留給各位客官去思考、去探索。
結(jié)尾
此處沒有精彩的結(jié)尾,但可以加個彩蛋。
想必各位客官瀏覽完上面的陳述和圖片后,肯定會對其中的一張圖片印象深刻,甚至?xí)蟹N茅塞頓開或者撥云見日的感覺。
<#哪張圖#>
沒錯就是下面這張圖,名眼人想必也注意到了這塊區(qū)域的內(nèi)容,一定感覺似成相識,我們文章開頭就提到"其中"命令"一般以-W開頭,格式為"-W****",例如"-Wnonnull"",所以圖中內(nèi)容各位客官可想而知,至于圖中出現(xiàn)的-f、-i、-o留給各位客官包括我自己去學(xué)習(xí)、去研究。

再結(jié)尾
以上內(nèi)容如有雷同,純屬巧合,如有錯誤,歡迎指教。