坑一
我們知道呆抑,在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
锨苏。
最后定位原因是因?yàn)轫?xiàng)目中導(dǎo)入了兩個(gè)UITextView+Placeholder.h
的分類疙教。
于是我新建了一個(gè)新項(xiàng)目,新建兩個(gè)文件夾伞租,分別導(dǎo)入兩個(gè)分類贞谓,UITextView+Placeholder.h
和UIView+Extension.h
,測(cè)試結(jié)果表明葵诈,UIView+Extension.h
分類重復(fù)導(dǎo)入不會(huì)崩潰裸弦,而UITextView+Placeholder.h
會(huì)。
因?yàn)?code>UITextView+Placeholder.h中使用了KVO作喘。
坑二
項(xiàng)目打包發(fā)布前一定要在release模式下測(cè)試一遍理疙,Release是發(fā)行版本,比Debug版本有一些優(yōu)化,文件比Debug文件小 泞坦;Debug是調(diào)試版本窖贤,Debug和Release調(diào)用兩個(gè)不同的底層庫(kù)。尤其是使用weakself時(shí)暇矫,在debug模式下很可能沒問題主之,Release模式下就crash了!
坑三
同一個(gè)頁(yè)面內(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è)備盔几。