【IOS平臺篇】xcode
1.app
1
2
3
4
|
<span style=
"font-size: 16px;"
>duplicate symbol _OBJC_METACLASS_$_DMSDWebImagePrefetcher in:
/Users/admin/Library/Developer/Xcode/DerivedData/BankFinder-fqgijokhpyhxxycxegilsfupadsm/Build/Intermediates/BankFinder.build/Release-iphoneos/BankFinder.build/Objects-normal/armv7/DMSDWebImagePrefetcher.o
/Users/admin/Desktop/OSChina/BankFinder/BankFinder/3rdLibs/DomobUniversal/libDomobThree.a(DMSDWebImagePrefetcher.o)
</span>
|
說明:出現duplicate symbol錯誤時不要慌,不外乎兩種類型的錯誤:第三方靜態lib文件之間衝突,這時候在錯誤描述裏面會體現出來;第二種是源文件(.h .m)文件之間的衝突,這裏包括工程中的源文件之間的衝突以及工程的源文件與lib庫中的源文件衝突。此處屬於第二種中的後者。iphone
解決方法:根據錯誤提示,找到相應的文件,好比本處是DMSDWebImagePrefetcher.h(.m)在工程中出現屢次,排查並刪掉之函數
2.xcode編譯失敗,可是無任何出錯的信息!不會有紅色的編譯錯誤提示!fetch
說明:很奇特的狀況,緣由是當前的系統時間以後了一天,改回正常的時間就沒問題了!ui
解決方法:修正系統時間編碼
3.no matching function for call to ***(***表示函數名)url
說明:從字面上理解很像是函數不存在,但實際上是簡單的一個錯誤。這種狀況通常發生在oc調用c或者C++時,主要是由函數的參數不匹配引發的!spa
解決方法:修正函數的參數3d
4.自定義view,在loadNibNamed這句上始終crash掉,可是不顯示異常緣由!
說明:這種狀況通常是由於xib的outlet鏈接錯誤,我此次遇到的錯誤就是本 來outlet連接了一個property,可是後面這個property名稱被我改了,可是xib中沒有作相應的更改,致使crash。如何確認是否正 確呢?在你的自定義xib的view上右鍵查看全部的outlet,若是有錯就會有黃色標誌。
解決方法:從新鏈接outlet
5.cocoaPod設置好PodFile並使用pod update或者pod install下載新的第三方庫後,編譯代碼沒問題,在運行時提示「unrecognized selector」錯誤。
說明:理論上看,全部流程都沒問題,頭文件也加了,庫也加到工程了,command+方法也能正確找到對應頭文件,但在運行時卻出錯。懷疑是工程設置的問題。最後參考SO的文章。去工程設置的Other Linker Flag中檢查發現,新添加的庫沒有出如今裏面,也就是說雖然庫資源都有了,可是xcode沒法加載。
好比,咱們指望新增MMPlaceHolder庫,可是在上述操做完成後設置是這樣的:
解決方法:
6.error is Error Domain=NSURLErrorDomain Code=- 1000 "錯誤的 URL" UserInfo=0x8088e70 {NSUnderlyingError=0x8083680 "錯誤 的 URL", NSLocalizedDescription=錯誤的 URL
說明:在進行HTTP請求時出現的-1000的錯誤碼,通常來講這個錯誤碼並非公司或者項目的後臺返回來的,而是系統預約義的一種錯誤類型。緣由是url中存在某些非法字符,好比空格以及中文字符。而空格頗有可能在http://...的h前面。
所以若是你的代碼沒有容錯能力,沒有對url中的空格以及中文字符等非法字符進行檢測,那當發送請求時就會出現這個錯誤。
解決方法:一、檢查url是否有空格;二、檢查是否含有中文。url中有中文是容許的,可是在發送前必須進行encoding編碼(utf8)。而空格是必需要刪除掉的
7.dyld: Symbol not found: _OBJC_CLASS_$_xxxxxxxxx
說明:今天遇到一個很是使人費解的崩潰bug,項目代碼幾年來一直正常運行,可是引入了其餘組的某個SDK後在iOS6上崩潰,提示: dyld: Symbol not found: _OBJC_CLASS_$_NSURLSession 但 是通過查證,咱們的源碼以及該SDK都沒有使用過NSURLSession這個類。apple文檔中說這個類包含在 Foundation.framework中,但咱們確實沒有調用。可是把其餘組的這個SDK刪掉後又正常。這個問題目前還想不通,可是咱們的解決方法如 下,其餘相似問題也能夠按照這種方式解決。
解決方法:在工程設置的Build Phases->Link Binary with Libraries中將xxxxxxx所在的庫從required改成optional,好比我遇到的狀況就是改Foundation.framework.