[更]iOS開發(fā)-常見的編譯、崩潰錯誤、實用技巧

寫在前面:作為程序猿,在開發(fā)的過程中肯定會遇到各種編譯報錯,崩潰問題。一個好的程序猿會根據控制臺給出的提示快速的解決問題。下面一起來看看各種錯誤吧:

文件丟失

1.error: /Users/apple/Downloads/xxx.png: No such file or directory

這個錯誤是xxx圖片被不在項目的目錄下,解決:(1)將該圖片add到項目的目錄下;(2)直接將紅色名字的圖片刪除。

編譯錯誤

1.error:linker command failed with exit code 1 (use -v to see invocation) -no_pie and -bitcode_bundle(Xcode setting ENDBLE_BITCODE=YES)cannot be used together;

這個bitcode是被編譯程序的一種中間形式的代碼。包含bitcode配置的程序將會在App store上被編譯和鏈接。bitcode允許蘋果在后期重新優(yōu)化我們程序的二進制文件,而不需要我們重新提交一個新的版本到App store上。是xcode7 之后更新的。在我們新建項目的時候默認是YES.如果我們的工程需要支持bitcode,則必要要求所有的引入的第三方庫都支持bitcode。

對于iOS,bitcode是可選的。

對于watchOS,bitcode是必須的。

對于Mac OS,bitcode不支持。

解決:我們可以在”Build Settings”->”Enable Bitcode”選項中看到這個設置,并將它設置為NO

2.The operation couldn't be completed.(LaunchServicesError error 0.)

這個問題出現的原因:修改了Bundle ID.

解決:重新啟動iOS模擬器

3.XCODE中錯誤: Undefined symbols for architecture i386 error

原因:出現Undefined symbols for architecture i386這種錯誤一般是你用模擬器作為目標,但編譯的時候找不到相關的庫文件。

解決:需要做的就是把庫文件所在的位置添加到library search path中。

參考:參考 參考

4.編譯出現錯誤:linker command failed with exit code 1

ld: warning: ignoring file /Volumes/Xcode/Xcode.app/Contents/Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit, missing required architecture armv7 in file

ld: duplicate symbol OBJC_METACLASS$_MMApiRegister in /Users/wangbin/Desktop/00_ios/hezi_ios08/WXSDK/libWeChatSDK.a(WeChatRegister.o) and /Users/wangbin/Desktop/00_ios/hezi_ios08/WXSDK/libWeChatSDK.a(WeChatRegister.o) for architecture armv7

clang: error: linker command failed with exit code 1 (use -v to see invocation)

這個問題不知道到底是什么回事...(貌似沒適配 armv7)

解決辦法:把.a 文件移除了,再重新添加.a文件 ,就編譯過了。

5.xcode 真機調試錯誤:Could not find Developer Disk Image

解決方法:

方法1:拷貝這個文件點我/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport,然后重新啟動xcode(完全退出)就可以了。

方法2:更新Xcode到7.2版本。

6.Unknown class XXViewController in Interface Builder file. 問題處理。

7.問題:apple Mach-o Linker error 。

解決:通常是compile source 中有相同的.m文件。

8.問題:真機調試出現failed to get the task for process.

解決:證書可能出現問題。(過期,不匹配等)

9.問題:報錯expect a type。

解決:可能出現在.h文件的循環(huán)引用,包含文件用@class代替即可。

10.問題:報錯linker command failed with exit code 1 (use -vto see invocation)

解決L:出現了兩個完全一樣的m文件,刪除即可。(另外:如果代碼中有c或者c++的混編,也不能在兩個不同名稱的mm文件中進行聲明或者引用,這樣也會觸發(fā)這個錯誤的發(fā)生)

11.問題:報錯Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]

原因:就是函數- (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath
這個函數的返回值是個
null
*。

解決:檢查**- (UITableViewCell *)tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath
這個函數的代碼邏輯。

12.問題:集成支付寶 warning: (arm64) /Users/scmbuild/workspace/standard-pay/IOS/cp_record_client_release_556515/14 產生一大推警告。

因為:AlipaySDK.framework 是先 build 的靜態(tài) lib ,然后轉成的 framework ,但是在 build 靜態(tài) lib 時 CLANG_ENABLE_MODULES 沒有被設置成 disabled

解決:如圖

20160113105650658.png
  1. Go to Build Settings -> Build Options -> Debug Information Format

  2. Change the Debug setting from "DWARF with dSYM File" to "DWARF"

  3. Leave the Release setting at "DWARF with dSYM File"

13.問題:集成微信SDK,報錯 -[__NSArrayM enqueue:]: unrecognized selector sent to instance 0x170243ba0。

解決:你的工程文件中選擇Build Setting,在"Other Linker Flags"中加入"-Objc",其中-ObjC的C要大寫。

文件引用

1.在link with lib 種添加 ** libxml2.dylb 后** 引用不了老是找不到頭文件

解決:找到Project -> Edit Project Settings -> Build Settings,把“/usr/include/libxml2″添加到“Header Search Paths” 和 “-lxml2″添加到“Other Linker Flags

實用技巧

1.如何在UITableView上添加手勢實現點擊TableView收回鍵盤,并且不與點擊cell事件沖突?有時候tableView上會存在輸入控件會彈出鍵盤,需要點擊tableView收回鍵盤。

解決:

(1),設置鍵盤return key的點擊事件收回鍵盤;

(2),當某些需求必須要點擊table收回鍵盤的時候,就可以試試給tableView添加手勢。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchTableView)];

tap.cancelsTouchesInView = NO;

[tableV addGestureRecognizer:tap];

tap.cancelsTouchesInView = NO; 這句很重要,cancelsTouchesInView系統默認為YES.就是當手點擊的時候接受到了這個手勢點擊事件,其他的view是否能接收點擊事件。如果不設置為NO,那你點擊cell之后是不會觸發(fā)table的回調點擊方法的。設置為NO之后,就不會和點擊cell沖突了。


這篇文章會一直更新下去,只要碰到問題或看到問題都會更到文章上,并貼出答案。(大家要可以把你們碰到的問題以及解決辦法評論在文章下面,我看到之后,會貼到文章上,并@你,這文章主要是起沉淀作用,自己以后碰到問題也許能在這找到答案,也能幫助同行的程序猿。問題無法解決的或者是答案有誤的,歡迎大家指出,好及時作出更正)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容