[匯]編譯錯誤匯總


1、"std::ios_base::Init::~Init()", referenced from

出現這樣的編譯問題,是需要再加進libstdc++.dylib和libstdc++.6.dylib(為6.1使用,xcode5以后默認complier也可以編譯通過)

2、apple Mach-o Linker error通常是因為compile source中有相同的.m文件

3、如果在真機中進行測試時出現failed to get the task for process,有可能是證書出了問題。

4、如果出現expect a type的錯誤,可能出現了在.h文件中的循環引用。

5、以后不能同時有兩個一樣的.m文件在編譯,這樣會報linker command failed with exit code 1 (use -vto see invocation)這個錯誤

(另外:如果代碼中混合有C或者C++代碼,那么,也不可以在兩個不同名稱的mm文件中進行聲明或者引用,因為也會導致這個錯誤的發生)。

6. 編譯器提示類似file is universal but does not contain a(n) armv6 slice for architecture armv6的錯誤。可能是您的XCode版本過低,推薦使用4.2以上的版本,將XCode的Build Settings中的Architectures設置成arm7。

7. XCode提示有類似C++語法的錯誤。可能是您在調用接口時沒有設置成OC與C++混編模式(具體做法為將調用接口的實現文件改為.mm的后綴)。

8. 提示類似ld: 3 duplicate symbols for architecture i386(arm7)的錯誤。可能是您用了與SDK相同的第三方庫,解決方法是刪除引起錯誤的第三方法庫的實現文件(.m文件)。

9. 編譯器提示類似file is universal (2 slices) but does not contain a(n) armv7s slice:…… for architecture armv7s的錯誤。是因為此版本的庫還不支持arm7s的環境,將Build Settings項中的Valid ArchiteCtures中的arm7s刪除即可解決。

10. 編譯器提示類似Duplicate symbol _NN_Decode in /Users/…/libPPUserPayKit.a(UPPayRsa_nn.o)  for architecture armv7或Command /Developer/…/bin/llvm-g++-4.2 failed with exit code 1的錯誤。則是因為C++混編模式引起的,您可以將Build Settings 設置項里面的Other Linker Flags設置成空即可。

本地化字符串文件不能使用。

【1.】清理建文件夾,刪除里面的一切DerivedData( 位於“/Users/個人PC用戶名/Library/Developer/Xcode/DerivedData”下的緩存文件占了很大的內存空間),刪除里面的程序,重新啟動Xcode,重建工程。


DerivedData文件夾


【2.】去項目目錄里,手動地創建兩 infoplist.strings 的文件,第一次在 en.lproj文件夾和第二次在 fr.lproj文件夾。

 

 

報錯
 
未引入庫文件( .m文件)

 

一般是沒有引入相應的庫文件(或 .m文件)。在引入三方庫的時候都會提供 .a文件或framework,里面裝的是第三方庫所提供的對 .h文件的實現,只有加進去了才能找到 .h文件里面方法的實現。

解決辦法是,檢查工程里是否已經把對應的文件加了進來。若是已經加了,則在build phases底下的compile sources中加入相應的 .m文件,或者在link binary with libraries中加入相應的庫文件。


 

 

Thread 1: signal SIGABRT

往往是一個對象被釋放了多次(多次釋放)。大多是粗心所致。
有一種情況稱為過渡釋放,比較隱蔽。

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; self.myData = [userDefault objectForKey:@"myCollectData"];

這種寫法是錯誤的!我們自己並沒有將內存分配給myData。所以 編譯器對這塊內存有控制權,而不是我們自己!
所以,在某個時刻,我們不能保證myData是否有效。更不能保證程序到最后 進行了“[_myData release];”操作!


根據 “誰分配,誰管理” 的原則!我改寫成了如下形式:

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSData * my_data = [userDefault objectForKey:@"myCollectData"]; self.myData = [NSData alloc] initWithData:my_data];

確保進行了初始化!這樣才正確!

 

manager start failed :

在 info.plist 中必須添加 “Bundle display name”
在使用 百度地圖開發平台 時
需要直接用“source code”方式,打開info.plist並添加:

<key>CFBundleDisplayName</key> <string>BaiduDemo</string>

便可以了 !!! (當然DisplayName(展示名字)是可變的 )

 

iOS10 點擊有關 權限訪問 直接Crash了

並在控制台輸出了一些信息:

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSContactsUsageDescription key with a string value explaining to the user how the app uses this data.

意思:你需要在info.plist文件中 添加一個“NSContactsUsageDescription ”的Key,並為Value添加一個描述。

1,在項目中找到info.plist文件,右擊 “Open As”,以“Source Code” 的形式打開;
2,分別復制 以下 Value 和Key,Key 是一定不能錯,Value 可以隨便填寫;
3,在info.plist 文件上 復制上,然后 保存。並且Clean 工程就好了。

// 相機權限描述: <key>NSCameraUsageDescription</key> <string>cameraDesciption</string> // 通信錄: <key>NSContactsUsageDescription</key> <string>contactsDesciption</string> // 麥克風: <key>NSMicrophoneUsageDescription</key> <string>microphoneDesciption</string> // 相機: <key>NSPhotoLibraryUsageDescription</key> <string>photoLibraryDesciption</string>

 

PNG圖片格式錯誤

 

打包的時候,出現這個警告!意思是:png file invalid;從新導入一下png圖片就ok了。但是是 要知道是哪張圖片出問題了。

 

Message from debugger: Terminated due to signal 9

原因:在調試的時候主動了結束了程度,如上滑、點擊按鈕等結束了程序。

 

Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

在默認情況下,AFNetworking的網絡請求都是以json的數據格式返回數據。因此,在客戶端也會以json為默認格式。如果返回的數據為非json標准格式,則會報此錯。
我們只需要在發送請求前加入下面代碼:

manager.responseSerializer = [AFHTTPResponseSerializer serializer]。

 

[__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310’

問題原因:NSNumber類型與NSString類型沖突。
解決方法:將所需要相應屬性的NSString類型改為NSNumber類型(將屬性類型設置為⭐️NSNumber), 調用時在將NSNumber類型 轉成 NSString類型即可。

 

linker command failed with exit code 1 (use -vto see invocation)

原因:導入了.m的頭文件,導致同時有兩個一樣的.m文件在編譯

 

Xcode真機測試報錯:Could not launch...
解決方案一:1.刪除/Users/(用戶名)/Library/Developer/Xcode/DerivedData/(對應APP程序)文件夾; 2.拔掉手機,刪除對應的APP程序,完全退出Xcode工具; 3.重新連接手機進行真機測試。 解決方案二:進行過真機抓包測試,關閉HTTP代理。 解決方案三:1.選擇手機中“設置” -> “通用” -> “設備管理” -> 選擇自己對應的開發商應用 -> “刪除應用”; 2.重新運行Xcode中的程序,這個時候應該還會報錯; 3.再次進入自己對應的開發商應用 -> “驗證應用”; 4.再次運行Xcode中的程序就OK了。

 

Warning! ivar size mismatch in StepUICollectionView_ of 80 bytes - can't change the superclass.
解決:1.搜索StepUICollectionView,找到.m文件 2.搜索char filler,在[]中的數據上加上警告提示的數據

 

Xib連線問題

 
問題原因:Xib中連線出問題

 

沒實現某方法

 
問題原因:某個對象沒有實現某個方法

 

 

 

警告
 
Data argument not used by format string

 

“stringWithFormat:”里面沒有idx對應的格式引起的。




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM