記錄下自己開(kāi)發(fā)過(guò)程中遇到的一些小bug
定期更新
1.服務(wù)器接口正常返回字段, 沒(méi)有做異常處理.然后服務(wù)器突然返回Null,結(jié)果崩潰.需要判斷服務(wù)器返回?cái)?shù)據(jù)是否為NULL, isKindofClass [NSNull class]或者使用Nullsafe分類
2.cocoapods添加``SVProgressHUD``的時(shí)候會(huì)出現(xiàn)過(guò)模擬器崩潰,bundle報(bào)錯(cuò),真機(jī)運(yùn)行沒(méi)問(wèn)題,. 將SVProgressHUD從pod刪除后重新添加進(jìn)入項(xiàng)目解決了這個(gè)問(wèn)題绑莺!
3.線上第三方加載的storyBoard突然crash,重新導(dǎo)入改第三方,解決!
4.UIScrollView 設(shè)置滾動(dòng)范圍和滾動(dòng)視圖同樣大小的時(shí)候無(wú)法滾動(dòng),必須滾動(dòng)范圍>滾動(dòng)視圖的時(shí)候才有位置可以滾動(dòng) scrollview 確認(rèn)滾動(dòng)范圍contextSize.
①使用setContextSize設(shè)置
②ScrollView上布局視圖,自動(dòng)計(jì)算出滾動(dòng)范圍.
5.自定義彈窗視圖 使用alloc init實(shí)例化時(shí)設(shè)置了frame沒(méi)有出現(xiàn)問(wèn)題. 后來(lái)自定義類方法實(shí)例化的時(shí)候的忘記了設(shè)置frame值 但是視圖的顯示沒(méi)有什么問(wèn)題,卻引起了無(wú)法接受點(diǎn)擊事件的情況. 解決過(guò)程,新增的代碼一步一步的注釋.看引起無(wú)法點(diǎn)擊的地方是哪里? 答案: 由于使用了類方法實(shí)例化,只傳入了參數(shù),但是沒(méi)有設(shè)置frame值,所以點(diǎn)擊的時(shí)候并沒(méi)有點(diǎn)擊到視圖上,所以無(wú)法響應(yīng)事件
6.測(cè)試環(huán)境測(cè)試推送,打ad-hoc的包,測(cè)試無(wú)法收到推送 是由于極光推送測(cè)試時(shí),必須匹配對(duì)應(yīng)環(huán)境打包才可以測(cè)試, 如測(cè)試環(huán)境時(shí)必須打包的開(kāi)發(fā)證書的包,而ad-hoc是發(fā)布證書打的包,是用于發(fā)布環(huán)境測(cè)試時(shí)才可以
7.可變數(shù)組問(wèn)題,使用可變數(shù)組組裝數(shù)據(jù),每次組裝后,全部的數(shù)據(jù)都跟著變化,是由于可變數(shù)組地址問(wèn)題造成,每次添加使用copy將可變數(shù)組拷貝成不可變數(shù)組解決.
8.點(diǎn)擊H5頁(yè)面按鈕本來(lái)需要彈出一個(gè)彈窗,原生JS alert彈窗函數(shù)在WKWebView無(wú)效
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(nonnull void (^)(void))completionHandler{
//js 里面的alert實(shí)現(xiàn)暖眼,如果不實(shí)現(xiàn),網(wǎng)頁(yè)的alert函數(shù)無(wú)效
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:message message:nil preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
completionHandler();
}]];
[self presentViewController:alertController animated:YES completion:^{}];
}
9.導(dǎo)入了公司另一個(gè)兄弟開(kāi)發(fā)的SDK,模擬器和真機(jī)都能正常運(yùn)行,但是到了打包的時(shí)候報(bào)錯(cuò):clang: error: linker command failed with exit code 1 (use -v to see invocation) 后來(lái)發(fā)現(xiàn)是由于勾選了bitcode選項(xiàng),而他開(kāi)發(fā)的SDK包并不支持bitcode所以報(bào)錯(cuò)了. 我們可以在Build Settings中 找到Enable Bitcode選項(xiàng),將該選項(xiàng)設(shè)置為NO即可解決問(wèn)題.
10.Swift開(kāi)發(fā)中,pod 'SnapKit' 后, 進(jìn)行import 發(fā)現(xiàn)找不到該第三方. 后面使用 pod search 'SnapKit 搜索版本, 然后指定版本pod install.
11.同事更新pods庫(kù)后,我拉取后進(jìn)行Pod install,然后報(bào)錯(cuò):SDWebImage中的'NSImage + webcache'file not found',嘗試使用注釋podfile文件中的 pod sdwebimage后進(jìn)行刪除庫(kù)再重新安裝, 發(fā)現(xiàn)即使注釋后再install也仍然刪除不了,查看podfile文件發(fā)現(xiàn)有個(gè)SDclyescrollView的庫(kù)對(duì)sdwebimage依賴.兩個(gè)庫(kù)一起注釋掉,然后install 刪除成功, 再重新導(dǎo)入, 解決了這個(gè)問(wèn)題.