今天碰到個奇怪的Bug,且看下面代碼:
//選項數組賦值
NSMutableArray *tmpAr = [[NSMutableArray alloc]init];
NSLog(@"%d+++,0 < (tmpAr.count - 100));
問判斷式是真是假?
按照常理判斷,tmpAr.count == 0, 0 - 100 當然小於0,也就說判斷式為假,輸出結果為“0”。
但是輸出結果卻為“1”
將代碼修改為:
//選項數組賦值
NSMutableArray *tmpAr = [[NSMutableArray alloc]init];
int s = tmpAr.count - 1;
NSLog(@"%d+++,%d,%d",0 < s);
判斷式結果輸出為“0”。
原因不明,但是得出的結論是NSArray/NSMutableArray的Count存在漂移的可能,所以取其Count的時候因該盡量先用int保存一道。