無(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"