錯(cuò)誤總結(jié)

無(wú)法編譯通過(guò)

duplicate symbol

注意頭文件中是否引入了.m文件

Apple Mach-O Linker Error

使用extern時(shí),一定要注意命名的一致

代碼警告

-Warc-performSelector-leaks

如果selector是在運(yùn)行時(shí)才確定的,performSelector時(shí),若先把selector保存起來(lái),等到某事件發(fā)生后再調(diào)用,相當(dāng)于在動(dòng)態(tài)綁定之上再使用動(dòng)態(tài)綁定,不過(guò)這是編譯器不知道要執(zhí)行的selector是什么,因?yàn)檫@必須到了運(yùn)行時(shí)才能歐確定,使用這種特性的代價(jià)是,如果在ARC下編譯代碼,編譯器會(huì)出現(xiàn)此警告。
原因是:編譯器不知道執(zhí)行的selector是什么,因此也就不了解其方法簽名及其返回值,甚至連是否有返回值都不清楚,由于編譯器不知道方法名,也就沒(méi)有辦法運(yùn)用ARC的內(nèi)存管理規(guī)則來(lái)判定返回值是不是應(yīng)該釋放。所以ARC采用了一種比較謹(jǐn)慎的方法,就是不添加釋放操作,然而這么做有可能導(dǎo)致內(nèi)存泄漏,因?yàn)榉椒ㄔ诜祷貙?duì)象時(shí)可能已經(jīng)將其保留了。
如果你確定不會(huì)發(fā)生內(nèi)存泄漏的情況下,可以使用如下的語(yǔ)句來(lái)忽略掉這條警告

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容