2011-11-15 35 views
0

我收到以下導致崩潰的錯誤。iPhone中的例外

由於未捕獲異常而終止應用程序NSGenericException原因集合CALayerArray在枚舉時發生了變異。 任何幫助將不勝感激。

+0

其他信息? – coder

+4

認真嗎?你希望我們知道這意味着什麼?沒有代碼,沒有上下文,沒有細節,只是一個模糊的錯誤信息?再試一次。 – KevinDTimm

+0

我建議你逐步瀏覽你的代碼,看看是否可以在發生這種情況時關閉它。 –

回答

1

「枚舉時發生了變化」 - 例如,當您枚舉數組的內容,然後在枚舉循環內枚舉或刪除對象時,會發生這種情況。

for (NSObject *obj in myMutableArray) { 
     if (<some_condition_is_true>) { 
      [myMutableArray removeObject: obj]; // CRASH!! 
     } 
} 

通常情況下,如果要修改一個數組,但你需要找到要修改的成員,你要麼使該陣列的複製和枚舉,然後做你的Mod,

對要刪除的對象進行引用,並在循環外執行刪除操作。像這樣:

NSObject *toast=nil; 
for (NSObject *obj in myMutableArray) { 
    if (this_is_the_one_to_delete) { 
     toast = obj; 
     break; 
    } 
} 
if (toast) { 
    [myMutableArray removeObject:toast]; 
} 
+0

非常感謝您的回覆。我通過你的幫助解決了這些問題。 – Sinha