背景
私たちが通常使用する NSMutableArray では、追加、削除、変更、チェックを行うときに、データ例外のシナリオが発生します (重要なのは、例外が避けられないということではなく、再現するのは簡単ではありません)。
そのシーンを再現してみる
最初に次のコードを実行します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
コードを実行すると、最終的な配列の数が 6000 に等しくないことがわかります。コードを数回実行すると、結果が毎回異なることがわかります。
スレッドセーフな配列を作成する
1. NSLockロックにより実現
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
2. シリアルキューで実現
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|