for
我可以在没有副作用的情况下删除我在 Objective-C 循环中循环的项目吗?
例如,这样可以吗?
for (id item in items) {
if ( [item customCheck] ) {
[items removeObject:item]; // Is this ok here?
}
for
我可以在没有副作用的情况下删除我在 Objective-C 循环中循环的项目吗?
例如,这样可以吗?
for (id item in items) {
if ( [item customCheck] ) {
[items removeObject:item]; // Is this ok here?
}
不,如果在快速枚举 for 循环中对数组进行变异,则会出现错误。制作数组的副本,对其进行迭代,然后从原始数组中删除。
NSArray *itemsCopy = [items copy];
for (id item in itemsCopy) {
if ( [item customCheck] )
[items removeObject:item]; // Is this ok here
}
[itemsCopy release];
你可以像这样删除:
//Create array
NSMutableArray* myArray = [[NSMutableArray alloc] init];
//Add some elements
for (int i = 0; i < 10; i++) {
[myArray addObject:[NSString stringWithFormat:@"i = %i", i]];
}
//Remove some elements =}
for (int i = (int)myArray.count - 1; i >= 0 ; i--) {
if(YES){
[myArray removeObjectAtIndex:i];
}
}