我有一个包含正在播放的声音的可变数组。
我有一个连续的过程来解析该数组以调整音量和其他一些事情。
有时,会播放新的声音,并且必须在播放开始之前将其添加到该阵列中 有时,我发生了崩溃,因为我的数组“在枚举时发生变异”。
我该如何解决?
答案 0 :(得分:1)
在枚举数组时,您无法轻松更改数组。
枚举数组并记下要添加的新声音(如果需要注释多个,请使用变量或单独的数组)。枚举完成后,将声音添加到数组中。
或者,制作一个数组副本,枚举副本并在需要时将声音添加到原始数据中。
答案 1 :(得分:1)
在这里看到任何代码会很高兴。但根据你所说的,我认为问题在于你用来迭代数组的方式。我想它看起来像这样:
for ( type *object in myArray) {
...
}
现在,正如异常所告诉您的那样,在执行此操作时无法修改数组。另一方面,如果您通过索引访问数组的值,它应该可以工作:
for (int i = 0; i < myArray.count; i++) {
[myArray objectAtIndex:i]...
}
但请记住,索引不是那么“稳定”,特别是如果删除对象。