Xcode常見報(bào)錯(cuò)及bug整理


1.頭文件導(dǎo)入時(shí)報(bào)錯(cuò)

類似這種看關(guān)鍵詞,是在編譯時(shí)候發(fā)現(xiàn)了重復(fù),可以全局搜索一下,

首先看看是不是導(dǎo)入頭文件時(shí)候?qū)?? .h后綴誤寫成了.m

其次在Targets-Build Phases-Compile sources中查找錯(cuò)誤提示中的類名,看是不是有兩個(gè)完全重復(fù)的.m文件

2.使用三方庫時(shí)報(bào)錯(cuò)


添加極光推送時(shí)按照網(wǎng)上的一些文章,沒有細(xì)看極光的官網(wǎng),少添加了一個(gè) .tbd 文件,添加了libresovl.tbd后就可以了


這里的重點(diǎn)是: Undefined symbols 如果對(duì)真機(jī)和模擬器架構(gòu)不是十分清楚的話容易被后面的架構(gòu)所迷惑關(guān)于架構(gòu)方面的可以參考這里鏈接感謝原作者

這種情況通常是用三方時(shí)候少加依賴庫了,仔細(xì)看看官方文檔,看看需要添加哪些庫一般就可以解決了

3. ?'libxml/tree.h' file not found

正確做法因該是Header Search Paths 設(shè)置為 ? ?${SDKROOT}/usr/include/libxml2

4.在使用自己的寫的動(dòng)態(tài)庫(Framework)時(shí)遇到的問題:

Could Not build module 'Social(或其它的名字xxxx)'

解決:change In target setting the "Allow Non-modular Includes in Framework modules" setting to YES(從stackoverflow查到的答案)

5.使用socket.io(swift寫的) 時(shí)報(bào)錯(cuò)

描述:dyld: Library not loaded: @rpath/libswiftCore.dylib

Referenced from: /private/var/containers/Bundle/Application/76625E1A-5250-4FA4-807D-09B1877A3F13/X001.app/Frameworks/SocketIO.framework/SocketIO

Reason: image not found。

解決:1.將這個(gè)設(shè)置為 YES

2.如果是非蘋果官方的庫,要將embed那里進(jìn)行設(shè)置,進(jìn)行嵌入embed framework

6.單元測(cè)試

單元測(cè)試時(shí)因?yàn)槭且粋€(gè)獨(dú)立的工程,所以把Framework的路徑重新配置一下,否則會(huì)報(bào)找不到framework,直接在Project里進(jìn)行配置,單元測(cè)試的工程里就也有了。

這個(gè)地方有個(gè)坑:當(dāng)你直接把framework拖過去的時(shí),他生成 的是一個(gè)文件的路徑,而不是文件夾的目錄路徑,所以要將最后面那個(gè)文件給手動(dòng)刪掉

參考連接?感謝作者的分享

7. 團(tuán)隊(duì)開發(fā),git 提交不完成,導(dǎo)致找不到某個(gè)文件


沒有該文件

背景:團(tuán)隊(duì)開發(fā)中,一個(gè)兄弟用了個(gè)三方庫,里面包含了SDWebImage,他刪除了工程中原來的SD庫,然后在git提交時(shí),自己的圖片庫中包含的SD沒有提交,當(dāng)時(shí)他忘記在藍(lán)色文件夾前面打勾了,他以為那個(gè)沒用,結(jié)果,其他人pull代碼之后就發(fā)現(xiàn)問題了,找不到這個(gè)文件

解決方案:讓那個(gè)同事將他沒有提交的庫,打上勾,提交一下,再pull下,就沒問題了。

8. 關(guān)于代理的生命周期問題會(huì)出現(xiàn)的bug

背景:一個(gè)單例類CCODSeatManager,里面有個(gè)代理協(xié)議CCODSeatManagerDelegate,里面有針對(duì)登錄登出,電話,IM 的相關(guān)代理方法,最典型的是登錄,登出,初始化登錄后,在登錄頁面有登錄成功的代理回調(diào),這個(gè)時(shí)候,這個(gè)單例被當(dāng)前VC持有,代理的生命周期在登錄這個(gè)VC里面 ,現(xiàn)在去 登出VC,里面也有這個(gè)單例的代理,然后登出的代理執(zhí)行完之后,反初始化,然后再回到登錄界面,進(jìn)行初始化登錄,相關(guān)的代理方法就不走了,因?yàn)楫?dāng)前的代理被登出VC持有,所以需要在登錄中重新設(shè)置一下代理,所以這種情況,需要在viewWillAppear中設(shè)置一下。

9.電腦內(nèi)存不夠,導(dǎo)致莫名報(bào)錯(cuò)

因?yàn)楣倦娔X是128G的,導(dǎo)致有時(shí)候莫名的報(bào)錯(cuò),因?yàn)閤code運(yùn)行時(shí)候,需要運(yùn)行空間,進(jìn)行數(shù)據(jù)相關(guān)的備份和整理,這時(shí)候如果空間不夠用,就會(huì)有各種問題,此時(shí),要首先clean,刪除derivedata,還不行,就要重啟電腦,刪一些東西,六點(diǎn)空閑空間出來。

10?library not found for -lstdc++.6.0.9 相關(guān)問題

首先需要下載相關(guān)的缺少的庫?傳送門,感謝作者

真機(jī)支持,找到真機(jī)路徑:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

將lstdc++.6.0.9? 放到這個(gè)目錄下;

模擬器支持,模擬器路徑

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib

將下面的文件放到這個(gè)目錄下


模擬器支持


還有一個(gè)路徑

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/

將上面的那三個(gè)庫也放到這三個(gè)路徑下面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 靜態(tài)庫與動(dòng)態(tài)庫的區(qū)別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進(jìn)制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,089評(píng)論 3 42
  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動(dòng)態(tài)庫有什么異同?靜態(tài)庫:鏈接時(shí)完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗...
    190CM閱讀 4,283評(píng)論 0 4
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評(píng)論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評(píng)論 19 139
  • 五色令人目盲,五音令人耳聾,五味令人口爽,馳騁畋獵令人心發(fā)狂,難得之貨令人行妨。——老子《道德經(jīng)·第三十四章》 英...
    6897e1c6fd79閱讀 299評(píng)論 0 0