1.一個警告點擊后提示:Treating Unicode character as whitespace
對于追求完美的猿來說,解決警告有時也是必須的赏陵。
解決方法:可能是由于粘貼網(wǎng)頁上的代碼的時候兩行之間的回車引起的槽片,有未識別的回車或者換行扩劝,找到津肛,刪除掉就 OK了盒让。
2.打包發(fā)布APP時驗證的時候報錯
分析:照上面上面的提示就是說菌赖,Bundle Identifier 和配置文件中的 ID是不一致的缭乘,可是我確認了很多次,確認是沒問題盏袄,也重新打包了很多次忿峻,再次驗證還是有這個問題。WTF辕羽?
解決辦法:關閉其它所有工程逛尚,退出 Xcode文件,再重新打開目標工程(注意刁愿,只打開這一個工程绰寞,不要打開其他的工程),再次Archive 铣口,驗證滤钱,就沒問題啦。這是由于打開多個工程造車的Bug脑题,目前推測這是Xode 內(nèi)部的Bug件缸。
3.使用[AVAudioPlayer play]會產(chǎn)生 libc++abi.dylib`__cxa_throw: 異常
我調用AVAudioPlayer play方法,會莫名的產(chǎn)生__cxa_throw異常叔遂, 只是簡單的調用系統(tǒng)的api他炊,有時候可以,有時候會異常已艰。
解決方案
由于xcode中設置了當所有異常出現(xiàn)時的全局斷點痊末,這是問題的關鍵。
解決辦法是將all改為Objective-C:
問題解決哩掺。
4. 明明加了刷新了控件了凿叠,可是就是上拉沒效果
這真是一個蛋疼的Bug,我使用的是 SDRefresh,一個Tb上明明加了上提加載的刷新盒件,可是就是上提沒有效果蹬碧,還以為是什么問題了,折騰了2小時履恩,研究底層锰茉,嘗試了很多辦法,還是不行切心, WTF l!绽昏!
解決辦法:我之所以出現(xiàn)這樣的現(xiàn)象是因為我的 Tb只有兩條數(shù)據(jù)协屡,只占到了Tb的1/3,當數(shù)據(jù)比較多時全谤,數(shù)據(jù)鋪滿屏幕時肤晓,這個上提加載的效果就出來了,看來是 SDRefresh 的刷新機制是當數(shù)據(jù)比較少時认然,不觸發(fā)刷新效果补憾,這在情理之中又超出常規(guī)思維。
5. 真機調試卷员,一處:Undefined symbols for architecture arm64:
在集成 螢石SDK的時候盈匾,把應該添加的 系統(tǒng)類庫都添加完了后,編譯還是報這個錯誤毕骡,而原Dome中運行正常削饵。
最后發(fā)現(xiàn),原Dome里面的 openssl類庫沒有添加進來未巫,才導致的這個錯誤窿撬。
OpenSSL是一個開放源代碼的軟件庫包,應用程序可以使用這個包來進行安全通信叙凡,避免竊聽劈伴,同時確認另一端連接者的身份。這個包廣泛被應用在互聯(lián)網(wǎng)的網(wǎng)頁服務器上握爷。
其主要庫是以C語言所寫成宰啦,實現(xiàn)了基本的加密功能,實現(xiàn)了SSL與TLS協(xié)議饼拍。OpenSSL可以運行在絕大多數(shù)類Unix操作系統(tǒng)上。
6. 真機調試田炭,另一處:Undefined symbols for architecture arm64:
這是使用SDWebImage 類庫報的錯师抄,不知道什么原因,一樣的代碼在另一個工程中就不會出出現(xiàn)這樣的報錯教硫,好無語叨吮。
解決辦法: 導入 MapKit and ImageIO frameworks.即可辆布。
7. #include "api/UserBind.h" 找不到
導入了一個第三方文件夾,文件夾的目錄是這樣的:
我們可以看到這是一個包含C/C++文件的文件夾茶鉴。這就是問題所在锋玲,對于導入的 OC文件是不需要這樣設置也可以搜索到的,因為是C/C++文件涵叮,才需要設置路徑惭蹂。
首先我們來了解下,有關iOS開發(fā)中的Search Paths設置問題:
添加目錄的時候寫上 “$(inherited)” 就表示從frameworks里面讀取割粮。
Library Search Paths
附加到項目中的第三方Library(.a files)的搜索路徑盾碗,Xcode會自動設置拖拽到Xcode中的.a文件的路
Always Search User Paths
如果設置了Always Search User Paths為YES,編譯器會優(yōu)先搜索User Header Search Paths配置的路徑,在這種情況下#include <string.h>,User Header Search Paths搜索目錄下面的文件會覆蓋系統(tǒng)的頭文件舀瓢。
C/C++ 頭文件引用問題
include <> 引用編譯器的類庫路徑下的頭文件
include “” 引用工程目錄的相對路徑的頭文件
include 是編譯指令廷雅,在編譯時,編譯器會將相對路徑替換成絕對路徑京髓,因此航缀,
頭文件絕對路徑=搜索路徑+相對路徑。
Xcode Build Settings 下 Search Paths設置搜索路徑
Header Search Paths:頭文件搜索路徑設置
(PROJECT_DIR)宏都指xxx.xcodeproj所在的父目錄
Other Linker Flags:其他鏈接標簽堰怨,當導入的靜態(tài)庫使用了類別芥玉,需要設為-ObjC。
Project的Building Settings中的設置默認并不被Targets繼承诚些,**只有當Targets的設置加入了(inherited)” 就表示從frameworks里面讀取。
*******************更新*******************
解決方法:
Header Search Paths 設置
這里要說一下诬烹,根據(jù)工程目錄砸烦,我們可以看見有一層 Third,但是我們搜索路徑中并未設置這一層绞吁,是因為幢痘,Third是虛擬目錄,實際上并不存在的家破,而且我們不能設置為 ..../Pay/openssl 不能加上 /openssl,否則會仍然報錯颜说,因為報錯圖片中已經(jīng)自帶了一層 /openssl路徑。
8. ....Podfile.lock:No such file or directory
心得:越詭異的Bug越有可能是最低級的手誤造成的汰聋,比如新建A门粪,對A初始化設置,實際使用的時候烹困,又新建了B玄妈,使用了B,沒有對B設置,這就造成了莫名其秒的Bug了拟蜻。
開始的時候用pod install/update各種都沒有用绎签。后來試了這種方法,重新build就ok酝锅。
在工程設置中的Build Phases下刪除Check Pods Manifest.lock及Copy Pods Resources
然后我刪除了pods 工程诡必,運行原工程時,報錯搔扁,找不到一個路徑爸舒。
最后在這發(fā)現(xiàn)了一個紅色的文件,刪除之阁谆,再次編輯就行啦碳抄。
9.項目導入外部文件后編譯運行出現(xiàn)Undefined symbols for architecture x86_64錯誤**
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_Person", referenced from:
objc-class-ref in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
這說明編譯沒有問題,連接的時候出錯了场绿,找不到導入的目標文件剖效。
遇到這種問題,首先想到的是導入文件編譯環(huán)境發(fā)生了變化焰盗,所以先選擇Product-Clean將項目緩存清理一下,Xcode清理項目緩存璧尸。但是這樣做還是不行,那怎么辦呢熬拒?
解決方案:
我們應該這樣做爷光,看項目有沒有編譯導入的文件,在這個位置查看:
選擇項目-Build Phases選項卡-Compile Sources Xcode查看項目編譯項目
這里只有一個main.m澎粟,Person.m沒有被編譯蛀序,當然錯誤了,將Person.m添加進去就OK了活烙。點擊下面的”+”添加徐裸,注意只添加.m文件,不添加頭文件啸盏!
10.編譯報錯_iconv
Undefined symbols for architecture i386:
"_iconv", referenced from:
_mail_iconv in libmailcore.a(charconv.o)
"_iconv_open", referenced from:
_charconv in libmailcore.a(charconv.o)
_charconv_buffer in libmailcore.a(charconv.o)
"_iconv_close", referenced from:
_charconv in libmailcore.a(charconv.o)
_charconv_buffer in libmailcore.a(charconv.o)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
解決辦法:導入系統(tǒng)的 libiconv.tbd 類庫即可重贺。