2011-10-15 55 views
0

我有一個可變數組,其中包含正在播放的聲音。iPhone - 枚舉時更改數組

我有一個連續的過程,解析該數組來調整卷和其他一些東西。

有時會播放一個新聲音,並且必須在播放開始之前將其添加到該陣列中。
有時,我有一個崩潰,因爲我的數組「被列舉時發生了變化」。

我該如何解決這個問題?

回答

1

枚舉時不能輕鬆更改數組。

枚舉整個數組並注意要添加的新聲音(使用變量或單獨的數組,如果您需要記錄多個聲音)。枚舉完成後,將聲音添加到數組中。

或者,製作數組的副本,枚舉副本並在需要時將聲音添加到原始副本。

1

這將是很高興看到任何代碼在這裏。但根據你所說的,我認爲問題在於你用來遍歷數組的方式。我想它看起來像這樣:

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

現在,你例外告訴你,而這樣做,你不能修改數組。如果,在另一方面,通過索引訪問數組的值,它應該工作:

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

請但是記住,索引是不是「穩定」這樣一來,特別是如果你刪除對象。