iPhone - 在枚举时更改数组

时间:2011-10-15 12:27:51

标签: iphone arrays cocoa-touch nsmutablearray

我有一个包含正在播放的声音的可变数组。

我有一个连续的过程来解析该数组以调整音量和其他一些事情。

有时,会播放新的声音,并且必须在播放开始之前将其添加到该阵列中 有时,我发生了崩溃,因为我的数组“在枚举时发生变异”。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

在枚举数组时,您无法轻松更改数组。

枚举数组并记下要添加的新声音(如果需要注释多个,请使用变量或单独的数组)。枚举完成后,将声音添加到数组中。

或者,制作一个数组副本,枚举副本并在需要时将声音添加到原始数据中。

答案 1 :(得分:1)

在这里看到任何代码会很高兴。但根据你所说的,我认为问题在于你用来迭代数组的方式。我想它看起来像这样:

for ( type *object in myArray) {
    ...
}

现在,正如异常所告诉您的那样,在执行此操作时无法修改数组。另一方面,如果您通过索引访问数组的值,它应该可以工作:

for (int i = 0; i < myArray.count; i++) {
    [myArray objectAtIndex:i]...
}   

但请记住,索引不是那么“稳定”,特别是如果删除对象。