objective-c - 枚举中的复制和自动释放

标签 objective-c cocoa for-loop enumeration

我试图在枚举时更改数组的内容。为了避免警告,“数组在枚举时发生了变化”,我复制了数组并像这样完成了自动释放-

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/

相关文章:

macos - 使用 Swift 中的 AudioToolbox 访问 OS X 主音量

python - Pandas 将 nan 替换为基于另一列的第一个非 nan 值

javascript - 使用 for 循环在 Canvas 中绘制 img

ios - iOS输入字符串略有不同(容错搜索)

objective-c - 简单的写入文件对我来说不起作用

cocoa - 每当打开新邮件时,IMAP 应用程序(使用 Pantomime)就会崩溃

c - 请解释一下这个素数生成器代码是如何工作的(C语言)

ios - Splunk 薄荷 : Failed to archive dSYMs for "MyApp" to "/tmp/splunk-mint-dsyms"

iphone - 获取与 iphone 设置应用程序中类似的时区列表

objective-c - 如何从 NSRange 中提取整数值?