2011-12-27 10 views
1

このコードはエラーを引き起こしていますが、何が間違っている可能性がありますか? 私はロックについて何かを読んでおり、不変なオブジェクトは複数のスレッドで使用するとクラッシュする可能性があります。しかし、実際に私はそれがどういうことなのか分かりません...エラー '***コレクション<__ NSCFDictionary:0x563560>が列挙されている間に突然変異しました。

+0

私はそれを列挙している間に辞書を変更していると思います。[existingHexagons removeObjectForKey:spriteKey]; はエラーの原因となる場所です。 – Ravin

答えて

4

、あなたが列挙中にあなたが辞書を変更することができ

for (spriteKey in [existingHexagons allKeys]) 

を使用することができます。しかし、とにかくすべてのキーを削除する場合は、代わりに​​メソッドを使用してループの後に辞書を空にしてはいけませんか?

+0

ありがとうございました:)。 –

2

高速列挙を使用しているオブジェクトを変更することはできません。だからあなたのコードでは、あなたがexistingHexagons
を変更しているので、あなたが定期的にforループを使用する必要があります

for (spriteKey in existingHexagons) 

の内側

[existingHexagons removeObjectForKey:spriteKey]; 

を行うことはできません。このような状況ですべてのキーを列挙する

関連する問題