我试图在枚举时更改数组的内容。为了避免警告,“数组在枚举时发生了变化”,我复制了数组并像这样完成了自动释放-
int iKeyArrayCount=0;
for(NSString *keyEntity in [[keyArray copy]autorelease])
{
[keyArray replaceObjectAtIndex:iKeyArrayCount withObject:[keyEntity stringByReplacingOccurrencesOfString:@"\"" withString:kMPVTBlankString]];
[keyArray replaceObjectAtIndex:iKeyArrayCount withObject:[keyEntity stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
iKeyArrayCount++;
}
我的困惑在于 keyArray 副本的枚举。虽然枚举是这样的,但每次执行 for 循环时都会形成 keyArray 的副本?或者在整个枚举过程中只形成该 keyArray 的一份副本。
最佳答案
在该代码片段中,[[keyArray copy] autorelease]
仅执行一次,结果用于正在迭代的对象。
换句话说,“在整个枚举过程中只形成了该 keyArray 的一份副本”是正确的。
关于objective-c - 枚举中的复制和自动释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12293930/