可変配列からオブジェクトを削除しようとしています-すべてのフレームで反復される配列(tick:メソッドを参照)。
私は得ています
*コレクション <__NSArrayM: 0xaa99cb0> が列挙中に変異しました。
例外。
そのため、他のスレッドに触れないようにロックするように追加 @synchronized()
しましたが、それでも失敗します。
- (void)addEventSubscriber:(id <EventSubscriber>)eventSubscriber
{
[_eventSubscribers addObject:eventSubscriber];
}
- (void)removeEventSubscriber:(id <EventSubscriber>)eventSubscriber
{
@synchronized(_eventSubscribers) // Not working.
{
[_eventSubscribers removeObject:eventSubscriber];
}
}
- (void)tick:(ccTime)dt
{
for (id <EventSubscriber> subscriber in _eventSubscribers)
{
if ([subscriber respondsToSelector:@selector(tick:)])
{
[subscriber tick:dt];
}
}
}