數組元素在刪減的同時進行遍歷的操做,程序崩潰問題

錯誤:Terminating app due to uncaught exception 'NSGenericException', reason: 數組

'*** Collection <__NSCFDictionary: 0xc425570> was mutated while being enumerated.app


由於我在枚舉menuList可變數組的時候,給menuList添加元素,那這個數組的大小發生了變化,不知道枚舉多少次了。ide


通常2種狀況會發生這種錯誤:spa

1,對可變數組A在枚舉的時候,添加或者刪除數組A的元素,改變了數組A的大小。線程

2,對於數組B,一個線程在對B進行枚舉操做,另外一個線程改變B數組的大小。it


若是在某個線程,對A NSArry進行寫操做。在另外某線程讀取A操做,就會出現「Collection was mutated while being enumerated」的錯誤警告。io

解決辦法能夠,B= [NSArray arrayWithArray: A],再經過B來進行操做.言外之意就是將數組同時進行的兩個狀態拆分出來,防止由於衝突而出現錯誤警告.class

相關文章
相關標籤/搜索