MG--錯誤總結(不定時更新)

總結自己在開發(fā)過程中遇到的BUG


第1和第2個錯誤

第3個錯誤

第4個錯誤
第5個錯誤

第6個錯誤

第7個錯誤

第8個錯誤

第9個錯誤
第10個錯誤



第11個錯誤

![第12個錯誤]](http://upload-images.jianshu.io/upload_images/1429890-b982f103cc502475.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

第十三個錯誤:

第十三個錯誤
  • 錯誤描述:控制器不能加載到UITableView
  • 解決方法:storyBoard的控制器與寫代碼的控制器不對應,改為對應的控制器即可。。

第十四個錯誤:iOS9 https協(xié)議

第十四個錯誤
  • 原因:從iOS9起,新特性要求App訪問網絡請求,要采用 HTTPS 協(xié)議。
  • 解決方法:如果仍想要使用HTTP協(xié)議,解決辦法如下:
    • 1,在Info.plist中添加 NSAppTransportSecurity 類型 Dictionary ;
    • 2,在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 類型Boolean ,值設為 YES
原因

第十五個錯誤:(直接拖入動畫框架POP的錯誤)

第十五個錯誤

  • 第十六個錯誤:網絡請求出錯


    第十六個錯誤
    • 解決方法

第十七個錯誤:NAN的錯誤

第十七個錯誤
  • 解決方法

第十八個錯誤:未定義的錯誤

第十八個錯誤
  • 原因:沒有定義某個屬性或者類
  • 解決方法:找到這個東西,定義一下即可

第十九個錯誤:bitcode的錯誤

第十九個錯誤:bitcode的錯誤
  • 原因:得到的信息是引入的一個第三方庫不包含bitcode。

  • 解決方法:要么讓第三方庫支持,要么關閉target的bitcode選項。如果這個庫不支持bitcode,暫時只能設置ENABLE_BITCODE為NO。
    ![Upload Snip20160601_24.png failed. Please try again.]

  • 補充:理解Bitcode:一種中間代碼。實際上,在Xcode 7中,我們新建一個iOS程序時,bitcode選項默認是設置為YES的。我們可以在”Build Settings”->”Enable Bitcode”選項中看到這個設置。


    Snip20160601_25.png

第二十個錯誤:真機調試下靜態(tài)庫架構問題

第二十個錯誤:真機調試下靜態(tài)庫架構問題
Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_WKWebView", referenced from:
      objc-class-ref in BSWebViewController.o
ld: symbol(s) not found for architecture x86_64
Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_BSWebViewController", referenced from:
      objc-class-ref in BSMeController.o
ld: symbol(s) not found for architecture x86_64
解決真機調試下靜態(tài)庫架構問題



第二十一個錯誤:使用FMDB遇到的錯誤(SWift)

Snip20160601_28.png
  • 原因:類型的表達式是不明確的,沒有更多的上下文
  • ?解決方法:找到這個東西,讓它類型明確即可


    解決方法.png

第二十二個錯誤:設置狀態(tài)欄出現的警告錯誤

  • 第二十二個錯誤:設置狀態(tài)欄出現的警告錯誤
  • ?錯誤描述:CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
  • 原因:View controller-based status bar appearance設置為NO
  • ?解決方法:修改方式將View controller-based status bar -appearance設置為YES,然后使用新的方式來實現狀態(tài)欄的樣式。
- (UIStatusBarStyle)preferredStatusBarStyle;
- (UIViewController *)childViewControllerForStatusBarStyle;
- (void)setNeedsStatusBarAppearanceUpdate


第二十三個錯誤:莫名錯誤--靜態(tài)庫不支持某種架構

  • ?錯誤:


    錯誤描述
  • ?解決


    解決

第二十四個錯誤:莫名錯誤--duplicate symbols for architecture x86_64(重復編譯)

第一種情況:在工程中重復導入了某一個類或文件,這一般出現在你添加第三方庫的時候比較多,在不知道的情況下又導入了一次相同的類。
第二種情況:工程中在#import引入頭文件的時候,將#import "XXX.h" 寫成了#import "XXX.m"。錯誤的引入.m頭文件 ```


第二十五個錯誤:(友盟分享)_rkl_NSExceptionForRegex in MOBFoundation

  • ?錯誤描述:
Undefined symbols for architecture x86_64:
  "_u_errorName", referenced from:
      _rkl_NSExceptionForRegex in MOBFoundation
      _rkl_userInfoDictionary in MOBFoundation
      _cm_rkl_NSExceptionForRegex in AGCommon
      _cm_rkl_userInfoDictionary in AGCommon
  "_u_strlen", referenced from:
      _rkl_userInfoDictionary in MOBFoundation
      _cm_rkl_userInfoDictionary in AGCommon
  "_uregex_setText", referenced from:
      -[MOBFRKLBlockEnumerationHelper initWithRegex:options:string:range:error:] in MOBFoundation
      _rkl_performRegexOp in MOBFoundation
      _rkl_clearCachedRegexSetTo in MOBFoundation
      -[CMRKLBlockEnumerationHelper initWithRegex:options:string:range:error:] in AGCommon
      _cm_rkl_performRegexOp in AGCommon
      _cm_rkl_clearCachedRegexSetTo in AGCommon
  "_uregex_start", referenced from:
      _rkl_performRegexOp in MOBFoundation
      _rkl_findRanges in MOBFoundation
      _rkl_search in MOBFoundation
      _cm_rkl_performRegexOp in AGCommon
      _cm_rkl_findRanges in AGCommon
      _cm_rkl_search in AGCommon
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
  • ?解決(other link)-licucore


    Xcode設置
  • 小結:
    • 可能會遇到這幾種錯誤:
Undefined symbols for architecture armv7
Undefined symbols for architecture armv7s
Undefined symbols for architecture arm64
Undefined symbols for architecture i386
Undefined symbols for architecture x86_64
  • 檢查靜態(tài)庫的CPU架構支持命令:
    lipo -info xxxxx.a
  • 找出不支持arm64的靜態(tài)庫
    find . -name *.a -exec lipo -info "{}"

第二十六個錯誤:Xcode8運行報錯--簽名必須加入某個team

  • ?錯誤描述
    • Xcode8運行報錯.png
  • ?解決
    • 解決.png

第二十七個錯誤:Swift3.0歸檔報錯--需要強引用

  • ?錯誤描述
    • 歸檔.png
  • ?解決
    • 刪除[weak self]即可

第二十八個錯誤:使用第三方框架PopoverSwift報錯--需要約束

  • ?錯誤描述
    • 使用第三方框架PopoverSwift報錯.png
  • ?解決
    • 將按鈕加入某個View即可,反正得讓按鈕有父控件

第二十九個錯誤: Swift3.0使用NSUserDefaults存儲Bool類型

  • ?錯誤描述
    • [NSUserDefaults setObject:forKey:]: attempt to insert non-property list object
      NSUserDefaults存儲.png
  • ?解決
    • 首先, 認為這種錯誤的原因是插入了不識別的數據類型,NSUserDefaults支持的數據類型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系統(tǒng)定義的數據類型。
      然而并不是這樣,我在取值之前先要存儲一下該Bool類型,代碼展示
SaveTools.mg_SaveToLocal(value: isAddMoveAnimation, key: "isAddMoveAnimation")  // 就是這句代碼,先要存儲一下該Bool類型
isAddMoveAnimation = SaveTools.mg_getLocalData(key: "isAddMoveAnimation") as! Bool
titleLabel?.text = titleStr ?? "其他工作"
if isAddMoveAnimation == false {
        self.addMoveAnimation(label: titleLabel!)
        isAddMoveAnimation = true
        SaveTools.mg_SaveToLocal(value: isAddMoveAnimation, key: "isAddMoveAnimation")
}

第三十個錯誤: Swift3.0使用導航欄給item添加約束報錯

  • ?錯誤
    • 描述:當給導航欄的左邊Item或右邊Item以及title自定義控件,并且自定義按鈕添加了約束,點擊push其他控制器就會報錯。。。 (如下錯誤)
  • ?解決:刪掉約束,使用frame
    • 解決方法



  • 第三十一個錯誤: 真機使用KVO報錯

    • ?錯誤
      Terminating app due to uncaught exception 'NSRangeException', reason: '
      <chart2.HomeVC 0x17d148c0> for the key path "frame" from
      <chart2.HomeVC 0x17d148c0> because it is not registered as an observer.'
      First throw call stack: 內存泄漏
      (0x297a3137 0x37833c77 0x297a307d 0x2a43fcc9 0x2a43f6db 0x103f2c 0x1040dc 0x3784e1a9 0x296b2729 0x2cdd2fb9 0x2976926d 0x29766951 0x29766d53 0x296b29a1 0x296b27b3 0x30e8b1a9 0x2ce3d695 0x157054 0x37ddbaaf)
    • 錯誤.png
  • ?解決:找到對應的監(jiān)聽者,之前移除的是self.removeObserver(self, forKeyPath: "frame"),報錯。所以不要移除錯了
  • 找到對應的監(jiān)聽者,不要移除錯了,否則就會報錯

第三十二個錯誤: 項目一段時間沒用,莫名報錯

  • ?錯誤
    clang: error: no such file or directory: '/Users/ZBKF001/Desktop/工作目錄/Chart/Chart/LMReport/NSIndexPath+LMReport.m' clang: error: no input files
  • ?解決:莫名其妙的錯誤 clear 強退XCode 刪除緩存

  • 第三十三個錯誤:設置導航欄全局屬性的BUG

  • ?錯誤

    • 代碼展示錯誤.png
  • 錯誤描述:reason: '-[_SwiftValue pointSize]: unrecognized selector sent to instance 0x600000442550'

    錯誤描述.png

  • ?解決:仔細看注釋掉的代碼和新增的代碼

    • 我了個去,這也算是個BUG

第三十四個錯誤:Swift導入編譯文件兩次的錯誤

  • ?錯誤
    • 錯誤描述
    • 錯誤描述:reason: “filename xxx Used twice”
  • ?解決:在Build Phases -> Compile Sources 刪除其中一個編譯的文件即可
    • 刪除其中一個編譯的文件

第三十五個錯誤:證書真機安裝安裝失敗

  • ?錯誤


    證書真機安裝安裝失敗.png
  • ?解決:在項目下Edit Scheme -> Run -> build Configuration 不小心調成release模式了 改回來Debug就行了.


    改回來Debug.png

第三十六個錯誤:打包上傳失敗

  • ?錯誤:因為沒有在iTunes connect 構建版本,那些ID和套裝ID未填寫,就打包上傳,報此錯誤


    因為沒有在iTunes connect 構建版本,那些ID和套裝ID未填寫,就打包上傳.png
  • ?解決:在iTunes connect 構建版本就行了.然后再上傳就ok了.

第三十七個錯誤:Modal錯誤

  • ?錯誤:which is already presenting *
Warning: Attempt to present * on * which is already presenting *
Warning: Attempt to present (要被presented的控制器)  on (哪個控制器來presenting) which is already presenting (已經被presenting的控制器)
self: 是被presented出來的控制器,
self.presentingViewController: 看看是誰把self給presenting出來
RPLog(@"%@ - %@", self.presentingViewController, [UIApplication sharedApplication].keyWindow.rootViewController);
打印結果: <RPNavigationController: 0x789d0330> - <RPNavigationController: 0x789d0330>

ProductionReport[98607:30384979] Warning: Attempt to present <UIAlertController: 0x7f8d0ae431b0> on <ProductionReport.QRCodeViewController: 0x7f8d0ac04af0> which is already presenting (null)

  • ?解決:
    • 結論: popver中的控制器, 其實是通過窗口的根控制器presenting出來的, 所以要想窗口的根控制器再presenting其他控制器,需要先dismiss掉原來presenting的控制器,

第三十八個錯誤:高德地圖錯誤

  • ?錯誤:Undefined symbols for architecture x86_64: *
Undefined symbols for architecture x86_64:
"_OBJC_METACLASS_$_GLKView", referenced from:
_OBJC_METACLASS_$_MAMapRender in MAMapKit(MAMapKit-x86_64-master.o)
"_OBJC_CLASS_$_GLKView", referenced from:
_OBJC_CLASS_$_MAMapRender in MAMapKit(MAMapKit-x86_64-master.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
  • ?解決:增加GLKit.framework系統(tǒng)庫就可以了

第三十九個錯誤:高德地圖錯誤

  • ?錯誤:“項目名-Swift.h”文件找不到
OC和Swift混編,“項目名-Swift.h”文件找不到
  • ?解決:target->build setting->packaging->product module name
    參考解決鏈接:OC和Swift混編,“項目名-Swift.h”文件找不到
    將product module name換成“product module name-Swift.h”。如果你的product module name有問題,例如是中文,特殊字符,你需要改為合法字符。改過之后,需要刪除DerivedData文件夾,重新編譯。。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • 平時遇到的錯誤我都會收集起來與大家分享,慢慢積攢中。。。 一. 問題: You must rebuild it w...
    黑白灰的綠i閱讀 5,645評論 4 13
  • 昏陽歿閑來沽酒梅花落梅花落晚香沾醉起蕭酣歌 涼風未曉寒天闊欲將紫袖銷殘破銷殘破挽芳送月不食煙火
    傾劍飛血閱讀 431評論 0 0
  • 概念 合成模式屬于對象的結構模式,有時又叫做“部分——整體”模式。合成模式將對象組織到樹結構中,可以用來描述整體與...
    今晚打肉山閱讀 749評論 0 0
  • 下午時分,風和日麗,和四個發(fā)小一起來到這個生活了二十多年的地方 — 好望角。 這兒說的好望角,不是南非的,而是地處...
    寫寫玩玩閱讀 711評論 0 0

友情鏈接更多精彩內容