我想从CCArray中删除NSNumber。当我使用removeObject:
删除13或更高的NSNumber时,不会删除任何内容。这里发生了什么?我尝试过使用NSMutableArray并且工作正常。使用removeObjectAtIndex:
不是一个选项,因为我的数组不会按数字顺序排列。
CCArray *arr = [CCArray array];
for (NSInteger i = 0; i < 20; i++) {
[arr addObject:[NSNumber numberWithInt:i]];
}
// Outputs arr count 20
CCLOG(@"%@: arr count %i ", NSStringFromSelector(_cmd), [arr count]);
[arr removeObject:[NSNumber numberWithInt:13]];
// Still outputs arr count 20
CCLOG(@"%@: arr count %i ", NSStringFromSelector(_cmd), [arr count]);
答案 0 :(得分:1)
我可以证实这似乎是一个问题。虽然我能够成功调用removeObject,但是indexOfObject:返回了NSNotFound。我重写了测试用例,错误消失了。我想是远离CCArray的另一个原因。
我建议在这种情况下使用NSMutableArray。 slightly better performance of CCArray不会反映在更好的帧速率中,尤其是对于具有20个元素的数组。此外,正确的代码总是比速度更快但不正确的代码更好。