我有一個可變數組,其中包含正在播放的聲音。iPhone - 枚舉時更改數組
我有一個連續的過程,解析該數組來調整卷和其他一些東西。
有時會播放一個新聲音,並且必須在播放開始之前將其添加到該陣列中。
有時,我有一個崩潰,因爲我的數組「被列舉時發生了變化」。
我該如何解決這個問題?
我有一個可變數組,其中包含正在播放的聲音。iPhone - 枚舉時更改數組
我有一個連續的過程,解析該數組來調整卷和其他一些東西。
有時會播放一個新聲音,並且必須在播放開始之前將其添加到該陣列中。
有時,我有一個崩潰,因爲我的數組「被列舉時發生了變化」。
我該如何解決這個問題?
枚舉時不能輕鬆更改數組。
枚舉整個數組並注意要添加的新聲音(使用變量或單獨的數組,如果您需要記錄多個聲音)。枚舉完成後,將聲音添加到數組中。
或者,製作數組的副本,枚舉副本並在需要時將聲音添加到原始副本。
這將是很高興看到任何代碼在這裏。但根據你所說的,我認爲問題在於你用來遍歷數組的方式。我想它看起來像這樣:
for (type *object in myArray) {
...
}
現在,你例外告訴你,而這樣做,你不能修改數組。如果,在另一方面,通過索引訪問數組的值,它應該工作:
for (int i = 0; i < myArray.count; i++) {
[myArray objectAtIndex:i]...
}
請但是記住,索引是不是「穩定」這樣一來,特別是如果你刪除對象。