在開發(fā)過程中,經(jīng)常會(huì)遇到各種各樣崩潰的問題,我現(xiàn)在根據(jù)自己平時(shí)遇到的各種異常,進(jìn)行一個(gè)匯總,以后再遇到同樣的問題時(shí)可以幫助自己快速解決,也可以給一些剛?cè)腴T的寶寶提供一些方法,喜歡記得點(diǎn)贊呦,以后會(huì)持續(xù)更新,正文如下:
一、有關(guān)于路徑的異常
最近接手了一個(gè)新項(xiàng)目,然后,接過來之后各種問題都出來了,很懵逼,但是得一點(diǎn)一點(diǎn)解決呀,仔細(xì)看了看報(bào)的錯(cuò),發(fā)現(xiàn)有幾個(gè)是路徑的問題,現(xiàn)在,在這里更新一下異常,方便以后更快的解決問題。
1、
// 找不到pch文件
/Users/houchunjiao/Desktop/智慧物流/SaaS 移動(dòng)端匯總/SaaS_Driver_iOS/SaaSDriver/<built-in>:1:10: '/Users/huxiao-mac/Desktop/司機(jī)端/SaaSDriver/SaaSDriver/PrefixHeader.pch' file not found
我當(dāng)時(shí)一看,還以為是文件沒有傳過來呢,搜了一下我的工程,發(fā)現(xiàn).pch 文件是存在的,那是因?yàn)槭裁茨?,我又去找到preject里面搜了一下prefix header,發(fā)現(xiàn)路徑不對(duì),具體操作流程:去工程配置里面選擇Predict-->Build Settings,選擇all和combined,然后我們搜索prefix header,就找到了放pch的路徑,如圖
現(xiàn)在呢,我們需要修改pch的路徑,怎么辦呢,我們可以看到,是PrefixHeader.pch這個(gè)pch文件找不到,我們可以雙擊打開prefix header,出現(xiàn)一個(gè)對(duì)話框,把這個(gè)文件直接拖拽過來就會(huì)出現(xiàn)一個(gè)路徑,如圖:
此時(shí),這個(gè)路徑顯示的是絕對(duì)路徑,在我們的Mac電腦上可以使用,但是如果是多人開發(fā),在別人的電腦上就不能使用了,所以我們需要把絕對(duì)路徑,改成相對(duì)路徑,我們只需要把工程的文件夾之前的給刪掉,用$(RSCROOT)來代替就變成相對(duì)路徑了,然后把Precompile Prefix Header改為No,如圖:
2、第二個(gè)路徑問題是找不到頭文件了
// 找不到頭文件
/Users/houchunjiao/Desktop/智慧物流/SaaS 移動(dòng)端匯總/SaaS_Driver_iOS/SaaSDriver/SaaSDriver/Class/AppDelegate/AppDelegate.m:11:9: 'AlipaySDK/AlipaySDK.h' file not found
這個(gè)也是路徑問題,我去找到存放Alipay路徑的地方,如圖
點(diǎn)開之后發(fā)現(xiàn)有兩個(gè)alipay的路徑,我們只需要?jiǎng)h掉找不到的那個(gè)就可以了,或者都刪了,按照拖pch的方法重新再拖一下就好了,舉一反三,基本上,只有工程中有著文件,然后是路徑的問題,我們都可以按照這種方式來解決。
二、有關(guān)于storyboard的異常
1、這一個(gè)是我在使用storyboard的時(shí)候,拋出的異常
Application tried to push a nil view controller on target <ClientNavigationController: 0x7fb3da0c2a00>.
2017-07-20 15:28:34.388 Client[9972:184249] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil’
這個(gè)是我在使用如下代碼的時(shí)候拋出的異常
UIViewController *controller = [sb instantiateInitialViewController];
此時(shí)是因?yàn)槲以趕toryboard中并沒有設(shè)置它的入口,我們只要在storyboard中勾選is initial view controller ,如下圖
這樣就不會(huì)報(bào)錯(cuò)了
2、有時(shí)候,我們沒有打開全局異常斷點(diǎn)的時(shí)候,程序是可以正常運(yùn)行的,但是我們打開全局?jǐn)帱c(diǎn)的時(shí)候就會(huì)拋出一個(gè)異常,進(jìn)入main函數(shù),此時(shí)我們也不知是哪里的問題,如下圖:
此時(shí)怎么辦呢,下面也沒有拋出原因,此時(shí),我們可以點(diǎn)擊一下運(yùn)行的按鈕,然后等待輸出平臺(tái)輸出拋出異常的原因。如下圖:
我這個(gè)異常是因?yàn)槲以谑褂胹toryboard的時(shí)候在運(yùn)行時(shí)中添加了兩個(gè)屬性,如下圖:
只要把這個(gè)屬性刪除了就好了,我們可以在storyboard中勾選clip to bounds就可以了
如下圖:
搞定!