關於Xcode警告

2021-09-24 04:55:42 字數 1448 閱讀 9327

大多數警告(⚠️warning)其實不一定影響專案功能,但是警告太多容易隱藏一些真正需要解決的問題,而且考慮有些朋友的強迫症,xcode的警告都是可以關閉的,出了直接的setting裡治標不治本的設定外,更應該根據編譯器的提示去真正解決它,這樣的過程對更了解編譯器也是有些幫助的。

implementing deprecated method.png

如圖所示的警告其實挺常見的,特別是一些第三方庫中,庫的開發者因為一些原因會修改api(其實ios的工程師也經常幹這事)。但是老的api不能一下子乾掉,畢竟線上有人再用,總得有個平穩過渡吧,所以就好存在一段時間存在新舊兩個api。這樣等使用sdk的人都切換到新的,再把舊的api乾掉,對使用者沒有損失,也達到了目的。

但是怎麼樣告訴使用者這個api變了呢,測試不提bug開發哪有那麼自覺呢,更何況誰也不會天天看文件啊。所以就有個這個巨集,如下邊這個方法的宣告,注意黑體的部分,這樣編譯器就會給出警告,告訴你趕緊換吧,舊的方法是廢棄的了。長時間使用廢棄的方法是危險的,因為說不定哪天這個方法就找不到了,你就慘了。

但是有時候很多**不是自己寫的,按照建議替換新的代價比較大,而且萬一改錯了呢,豈不是更冤。所以可以通過#pragma 處理警告 clang diagnostic 的使用處理這個問題。

這篇部落格寫作時間有點早,它裡面提到的那個鏈結我看到時已經打不開了(也可能是未使用科學上網的問題,不求證)。這裡提到兩個方法

// a

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-wdeprecated-declarations"

dfuservicecontroller *controller = [initiator start];

#pragma clang diagnostic pop

// b

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-wdeprecated-implementations"

- (void)willanimaterotationtointe***ceorientation:(uiinte***ceorientation)tointe***ceorientation duration:(nstimeinterval)duration else

}#pragma clang diagnostic pop

-wdeprecated-declarations可以消除使用了不建議的api的警告,-wdeprecated-implementations處理實現了廢棄的方法,也就是我遇到的情況。

因為****clangwarning

無法開啟了,所以我花了不少時間在這裡找到需要的關鍵字,最後在專案搜尋時發現專案裡一些第三方庫竟然用到過?,浪費了好久,記在這裡,希望幫大家節省些時間。

xcode 消除警告

專案中引用大量的第三方 時,這些 很複雜,不要輕易去改動它,如果編譯產生很多警告,該如何消除呢?1.最直接 最一勞永逸 最安全的方式,直接找到警告的那段 改為不警告。這個方式最安全。可是它有乙個問題,就是,當我們很多檔案都有這種型別的警告的時候,我們就需要改動很多很多的原始碼了,對於不是我們寫的原始...

Xcode 消除警告

在維護公司老專案的時候,因為很早以前開發的,專案能跑起來。但是公司已經不希望在上面花費時間,或多或少都會出現不少的警告。但是對於我絕對不忍受警告的出現,就想關閉它。以下是一下警告關閉的常規方法,希望能給後繼開發者一些幫助!1.遇到之前非arc的專案 遇到非arc寫的sdk,而自己專案是arc。點選p...

xcode忽略警告

1 對整個檔案使用 你的工程 你的target build phases compile sources 搜尋要忽略警告的檔名,在 compiler flags 列 雙擊,鍵入忽略警告的設定。多個設定項使用空格隔開。常用的幾種警告 1 忽略未使用變數的警告 2 wno unused variable...