Как избежать «NSArray был видоизменен при перечислении»

У меня есть NSMutableArray, в котором хранятся соединения мыши для моделирования физики Box2d. При использовании более чем одного пальца для воспроизведения я получаю исключения, заявляющие

NSArray был изменен во время перечисления

Я знаю, что это происходит потому, что я удаляю объекты из массива, а также перечисляю его, делая перечисление недействительным.

Что я хочу знать, так это то, какова наилучшая стратегия для решения этой проблемы в будущем? Я видел несколько решений в Интернете: @synchronized, копирование массива перед перечислением или помещение сенсорного соединения в массив мусора для последующего удаления (что, я не уверен, сработает, потому что мне нужно удалить mousejoint из массива сразу после его удаления из мира).

43
задан Josh Caswell 5 March 2015 в 02:48
поделиться