NSMutableArray* arrMutable = [NSMutableArray array];
//不能在枚举可变数组的同时增删其项目,下面的写法会报错。
for(AClass* item in arrMutable){
BOOL needRemove = YES;
if(needRemove){
[arrMutable removeObject:item];
}
}
正确作法:
NSMutableArray* arrMutable = [NSMutableArray array];
//不能对mutable arr在枚举的同时增删项目,下面的作法会报错。
for(AClass* item in [arrMutable copy]){
BOOL needRemove = YES;
if(needRemove){
[arrMutable removeObject:item];
}
//不能在枚举可变数组的同时增删其项目,下面的写法会报错。
for(AClass* item in arrMutable){
BOOL needRemove = YES;
if(needRemove){
[arrMutable removeObject:item];
}
}
正确作法:
NSMutableArray* arrMutable = [NSMutableArray array];
//不能对mutable arr在枚举的同时增删项目,下面的作法会报错。
for(AClass* item in [arrMutable copy]){
BOOL needRemove = YES;
if(needRemove){
[arrMutable removeObject:item];
}
}
注意,如果是自定义类,如果在数组中比较是否相等,需要重写自定义类的isEqual和hash这两个方法:
#pragma mark - override NSObject 数组中比较时需要 -
- (BOOL)isEqual:(id)other
{
if ([otherisKindOfClass: [AClassclass]]
&& [((AClass*)other).name isEqualToString:self.name]){
returnYES;
}else{
returnNO;
}
}
- (NSUInteger)hash
{
return [_name hash];
}