我有一个NSMutableArray
,它存储了Box2d物理仿真的鼠标关节。当使用多个手指玩时,我会收到异常,指出
NSArray在枚举时被更改了
我知道这是因为我正在从数组中删除对象并同时枚举它,从而使enum无效。
我想知道的是,解决这个问题的最佳策略是什么?我在网上看到了一些解决方案:@synchronized
、枚举之前复制数组或将触摸关节放入垃圾数组进行以后的删除(我不确定这是否有效,因为我需要在从世界中删除关节后立即从数组中删除鼠标关节)。
我有一个NSMutableArray
,它存储了Box2d物理仿真的鼠标关节。当使用多个手指玩时,我会收到异常,指出
NSArray在枚举时被更改了
我知道这是因为我正在从数组中删除对象并同时枚举它,从而使enum无效。
我想知道的是,解决这个问题的最佳策略是什么?我在网上看到了一些解决方案:@synchronized
、枚举之前复制数组或将触摸关节放入垃圾数组进行以后的删除(我不确定这是否有效,因为我需要在从世界中删除关节后立即从数组中删除鼠标关节)。
NSMutableArray * founded = [NSMutableArray new];
for (XYZ * item in searchableArray) {
if (item.xValue == 1) {
[founded addObject:item];
}
}
// NSSet * set = [[NSSet alloc] initWithArray:founded];
// [searchableArray removeItems:set];