从一个隐蔽的bug说起
int i = 0;
for(; i < [emptyArr count] - 1;){
//条件成立,数组越界
id obj = [emptyArr objectAtIndex:i];
}
由于数组count方法返回值类型是NSUInteger,当数组的size为0的时候,一个NSUInteger类型的0减去1结果还是NSUInteger类型,所以结果不是-1而是一个随机的正整数。
NSUInteger转成int
int i = 0;
for(; i < (int)[emptyArr count] - 1;){
id obj = [emptyArr objectAtIndex:i];
}
当数组为空时,(int)[emptyArr count] - 1结果是-1,不会进入循环.