iOS之踩過的坑

坑一

我們知道,在Xcode里,如果兩個(gè)文件重名,編譯的時(shí)候會(huì)報(bào)一個(gè) 2 duplicate symbols的錯(cuò)誤,但是如果是兩個(gè)分類重名呢,會(huì)報(bào)錯(cuò)嗎(不在同一個(gè)文件夾下)?答案是:不會(huì)

我在實(shí)際項(xiàng)目中遇到了這樣一個(gè)閃退的問題,控制臺(tái)報(bào)錯(cuò)如下:

An instance 0x7fef5c023400 of class UITextView was deallocated while key value observers were still registered with it。

控制臺(tái)打印

最后定位原因是因?yàn)轫?xiàng)目中導(dǎo)入了兩個(gè)UITextView+Placeholder.h的分類。

于是我新建了一個(gè)新項(xiàng)目,新建兩個(gè)文件夾,分別導(dǎo)入兩個(gè)分類,UITextView+Placeholder.hUIView+Extension.h,測試結(jié)果表明,UIView+Extension.h分類重復(fù)導(dǎo)入不會(huì)崩潰,而UITextView+Placeholder.h會(huì)。

文件目錄

因?yàn)?code>UITextView+Placeholder.h中使用了KVO。

坑二

項(xiàng)目打包發(fā)布前一定要在release模式下測試一遍,Release是發(fā)行版本,比Debug版本有一些優(yōu)化,文件比Debug文件小 ;Debug是調(diào)試版本,Debug和Release調(diào)用兩個(gè)不同的底層庫。尤其是使用weakself時(shí),在debug模式下很可能沒問題,Release模式下就crash了!


修改運(yùn)行模式
修改運(yùn)行模式

坑三

同一個(gè)頁面內(nèi)如果有兩個(gè)collectionview,一定要分別初始化兩個(gè)collectionViewLayout,兩個(gè)collectionview 使用一個(gè)collectionViewLayout就會(huì)crash!

坑四

項(xiàng)目名 does not have an architecture that 設(shè)備名 can execute.

這個(gè)問題主要是因?yàn)轫?xiàng)目設(shè)置的ARM指令集,比設(shè)備指令集高,也就是項(xiàng)目沒有兼容低版本設(shè)備的指令集導(dǎo)致的。所以需要我們?cè)O(shè)置更低的指令集來兼容低版本設(shè)備,這個(gè)設(shè)備版本不是iOS系統(tǒng)版本,而是硬件的版本,例如iPhone5、iPhone6這樣的設(shè)備。


ARM指令集
最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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