公司的項(xiàng)目剛剛上線.因?yàn)橐嫒?.0版本.遇到以下bug.分享給大家:
[array subarrayWithRange:NSMakeRange(logCeshi,3)]
造成閃退的原因:是因?yàn)閘ogCeshi的值為負(fù)數(shù)了,而logCeshi是NSInteger類型.如果為負(fù)數(shù)就默認(rèn)為18446744073709551615.超出數(shù)組范圍了
2.- (NSInteger)component:(NSCalendarUnit)unit fromDate:(NSDate *)date NS_AVAILABLE(10_9, 8_0);
方法8.0才出來,使用 NSDate *nowDate = [fq_dateFormatter dateFromString:[fq_dateFormatter stringFromDate:[NSDate date]]];
來間接轉(zhuǎn)換
3.NSLayoutConstraint類的setActive方法8.0才有.
_topViewRatio.active = NO; 做一次系統(tǒng)版本判斷
4.setObject: forked:
中的object是不能夠?yàn)閚il的: key可以是任何的類型
setValue: forked:
中的value能夠?yàn)閚il,當(dāng)value為nil時(shí).會(huì)自動(dòng)調(diào)用removeObject:forked方法, key只能夠是NSString類型,
5.報(bào)錯(cuò)異常:
-[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]
自己模擬的效果代碼是:
NSString * key = @"kaishi"; id object = nil; NSDictionary *dict = @{@"在了":@"開始",key:object};
//也就是說.這種初始化.需要保證value的值不能為nil.做一次判斷
同理數(shù)組也會(huì)有這種bug
NSString * key = @"kaishi"; id object = nil; NSArray * array = @[object,key];
錯(cuò)誤提示
'*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[0]’
//解決.做一次判斷即可
6.-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x37a36588
這個(gè)是null調(diào)用了 isEqualToString的方法.加一個(gè)判斷就行了
-
id json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
當(dāng)NSData *data = nil;
時(shí)會(huì)報(bào)錯(cuò).
NSLog(@"%@",json);
需要做一次判斷即可
8.==>數(shù)組越界的問題 .添加一個(gè)判斷即可
-(id)fq_objectAtIndex:(NSUInteger)index { //需要判斷數(shù)組.當(dāng)個(gè)數(shù)為0的時(shí)候.直接給用戶返回nil.當(dāng)用戶的index大于數(shù)組的長(zhǎng)度時(shí).我們返回nil.防止崩潰 if (self.count == 0 || self.count < index) { return nil; }else { //方法已經(jīng)替換 return [self objectAtIndex:index]; } }
9.還有第10個(gè)bug:
#0 Thread SIGSEGV SEGV_ACCERR 8 UIKit +[UIViewController _traverseViewControllerHierarchyWithDelayedRelease:] + 424 9 UIKit -[UIApplication _performMemoryWarning] + 252
暫時(shí)沒有頭緒.估計(jì)是AFN版本過低.已經(jīng)升級(jí)到3.0.后期根據(jù)bugly的反饋來確定這個(gè)問題
10.AFN更新的bug:
10.1我們從2.6升級(jí)到3.0.然后還有一個(gè)七牛的SDK有指定一個(gè)AFN的版本.之前使用的舊版本的七牛.指定的AFN 2.0.所以會(huì)有沖突.一定要保證七牛也更新為最新版本
10.2更新完成以后.我們運(yùn)行.會(huì)報(bào)一個(gè)
一直報(bào)[FQ_ShareDataNetworking GET:parameters:progress:success:failure:]: unrecognized selector sent to instance 0x7fe350f834b0
的錯(cuò)誤,解決的方法
刪除build 然后重新update一下.
那么怎么刪除build呢????
打開xcode ->preferences(偏好設(shè)置)->Locations(最后一個(gè))->Advanced->Legacy(打鉤)
你就可以在項(xiàng)目文件中看到神奇的build文件了.-->直接刪除.
11..- (BOOL)containsString:(NSString *)str NS_AVAILABLE(10_10, 8_0);
字符串包含方法是8.0出來的.我們可以通過一個(gè)字符串在另一個(gè)字符串的range做間接判斷.
喜歡就給個(gè)贊