今天碰到個奇怪的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保存一道。