總結(jié)自己在開發(fā)過程中遇到的BUG
第十三個錯誤:
- 錯誤描述:控制器不能加載到UITableView
- 解決方法:storyBoard的控制器與寫代碼的控制器不對應(yīng)革屠,改為對應(yīng)的控制器即可狠裹。。
第十四個錯誤:iOS9 https協(xié)議
- 原因:從iOS9起凝果,新特性要求App訪問網(wǎng)絡(luò)請求郁岩,要采用 HTTPS 協(xié)議婿奔。
- 解決方法:如果仍想要使用HTTP協(xié)議,解決辦法如下:
- 1问慎,在Info.plist中添加 NSAppTransportSecurity 類型 Dictionary ;
- 2萍摊,在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 類型Boolean ,值設(shè)為 YES
第十五個錯誤:(直接拖入動畫框架POP的錯誤)
-
第十六個錯誤:網(wǎng)絡(luò)請求出錯
第十七個錯誤:NAN的錯誤
第十八個錯誤:未定義的錯誤
- 原因:沒有定義某個屬性或者類
- 解決方法:找到這個東西,定義一下即可
第十九個錯誤:bitcode的錯誤
原因:得到的信息是引入的一個第三方庫不包含bitcode如叼。
解決方法:要么讓第三方庫支持冰木,要么關(guān)閉target的bitcode選項。如果這個庫不支持bitcode笼恰,暫時只能設(shè)置ENABLE_BITCODE為NO踊沸。
![Upload Snip20160601_24.png failed. Please try again.]-
補充:理解Bitcode:一種中間代碼。實際上社证,在Xcode 7中逼龟,我們新建一個iOS程序時,bitcode選項默認是設(shè)置為YES的追葡。我們可以在”Build Settings”->”Enable Bitcode”選項中看到這個設(shè)置腺律。
第二十個錯誤:真機調(diào)試下靜態(tài)庫架構(gòu)問題
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
第二十一個錯誤:使用FMDB遇到的錯誤(SWift)
- 原因:類型的表達式是不明確的,沒有更多的上下文
-
?解決方法:找到這個東西宜肉,讓它類型明確即可
第二十二個錯誤:設(shè)置狀態(tài)欄出現(xiàn)的警告錯誤
- ?錯誤描述: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設(shè)置為NO
- ?解決方法:修改方式將View controller-based status bar -appearance設(shè)置為YES匀钧,然后使用新的方式來實現(xiàn)狀態(tài)欄的樣式。
- (UIStatusBarStyle)preferredStatusBarStyle;
- (UIViewController *)childViewControllerForStatusBarStyle;
- (void)setNeedsStatusBarAppearanceUpdate
第二十三個錯誤:莫名錯誤--靜態(tài)庫不支持某種架構(gòu)
-
?錯誤:
-
?解決
第二十四個錯誤:莫名錯誤--duplicate symbols for architecture x86_64(重復(fù)編譯)
- ?錯誤:iOS開發(fā)之duplicate symbols for architecture x86_64錯誤
- ?解決:根據(jù)提示找出重復(fù)定義的類
- 總結(jié)了一下谬返,出現(xiàn)duplicate出這個錯誤一般有兩種情況:
第一種情況:在工程中重復(fù)導(dǎo)入了某一個類或文件之斯,這一般出現(xiàn)在你添加第三方庫的時候比較多,在不知道的情況下又導(dǎo)入了一次相同的類遣铝。
第二種情況:工程中在#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
-
小結(jié):
- 可能會遇到這幾種錯誤:
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架構(gòu)支持命令:
lipo -info xxxxx.a
- 找出不支持arm64的靜態(tài)庫
find . -name *.a -exec lipo -info "{}"
第二十六個錯誤:Xcode8運行報錯--簽名必須加入某個team
- ?錯誤描述
- ?解決
第二十七個錯誤:Swift3.0歸檔報錯--需要強引用
- ?錯誤描述
- ?解決
- 刪除[weak self]即可
第二十八個錯誤:使用第三方框架PopoverSwift報錯--需要約束
- ?錯誤描述
- ?解決
- 將按鈕加入某個View即可翰蠢,反正得讓按鈕有父控件
第二十九個錯誤: Swift3.0使用NSUserDefaults存儲Bool類型
- ?錯誤描述
-
[NSUserDefaults setObject:forKey:]: attempt to insert non-property list object
-
- ?解決
- 首先, 認為這種錯誤的原因是插入了不識別的數(shù)據(jù)類型项乒,NSUserDefaults支持的數(shù)據(jù)類型有NSString、 NSNumber梁沧、NSDate檀何、 NSArray、NSDictionary廷支、BOOL频鉴、NSInteger、NSFloat等系統(tǒng)定義的數(shù)據(jù)類型恋拍。
然而并不是這樣垛孔,我在取值之前先要存儲一下該Bool類型,代碼展示
- 首先, 認為這種錯誤的原因是插入了不識別的數(shù)據(jù)類型项乒,NSUserDefaults支持的數(shù)據(jù)類型有NSString、 NSNumber梁沧、NSDate檀何、 NSArray、NSDictionary廷支、BOOL频鉴、NSInteger、NSFloat等系統(tǒng)定義的數(shù)據(jù)類型恋拍。
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使用導(dǎo)航欄給item添加約束報錯
- ?錯誤
- 描述:當給導(dǎo)航欄的左邊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: 內(nèi)存泄漏
(0x297a3137 0x37833c77 0x297a307d 0x2a43fcc9 0x2a43f6db 0x103f2c 0x1040dc 0x3784e1a9 0x296b2729 0x2cdd2fb9 0x2976926d 0x29766951 0x29766d53 0x296b29a1 0x296b27b3 0x30e8b1a9 0x2ce3d695 0x157054 0x37ddbaaf)
- ?錯誤
- ?解決:找到對應(yīng)的監(jiān)聽者讯榕,之前移除的是
self.removeObserver(self, forKeyPath: "frame")
骤素,報錯。所以不要移除錯了
第三十二個錯誤: 項目一段時間沒用,莫名報錯
- ?錯誤
clang: error: no such file or directory: '/Users/ZBKF001/Desktop/工作目錄/Chart/Chart/LMReport/NSIndexPath+LMReport.m' clang: error: no input files
- ?解決:莫名其妙的錯誤 clear 強退XCode 刪除緩存
第三十三個錯誤:設(shè)置導(dǎo)航欄全局屬性的BUG
-
?錯誤
-
錯誤描述:
reason: '-[_SwiftValue pointSize]: unrecognized selector sent to instance 0x600000442550'
-
?解決:仔細看注釋掉的代碼和新增的代碼
第三十四個錯誤:Swift導(dǎo)入編譯文件兩次的錯誤
- ?錯誤
-
錯誤描述:reason:
“filename xxx Used twice”
- ?解決:在Build Phases -> Compile Sources 刪除其中一個編譯的文件即可
第三十五個錯誤:證書真機安裝安裝失敗
-
?錯誤
-
?解決:在項目下Edit Scheme -> Run -> build Configuration 不小心調(diào)成release模式了 改回來Debug就行了.
第三十六個錯誤:打包上傳失敗
-
?錯誤:因為沒有在iTunes connect 構(gòu)建版本送浊,那些ID和套裝ID未填寫,就打包上傳栽燕,報此錯誤
- ?解決:在iTunes connect 構(gòu)建版本就行了.然后再上傳就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 (已經(jīng)被presenting的控制器)
self: 是被presented出來的控制器,
self.presentingViewController: 看看是誰把self給presenting出來
RPLog(@"%@ - %@", self.presentingViewController, [UIApplication sharedApplication].keyWindow.rootViewController);
打印結(jié)果: <RPNavigationController: 0x789d0330> - <RPNavigationController: 0x789d0330>
ProductionReport[98607:30384979] Warning: Attempt to present <UIAlertController: 0x7f8d0ae431b0> on <ProductionReport.QRCodeViewController: 0x7f8d0ac04af0> which is already presenting (null)
- ?解決:
- 結(jié)論: 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文件夾,重新編譯鸵赫。衣屏。