从CCArray中删除对象无法正常工作

时间:2012-03-09 16:04:21

标签: objective-c cocos2d-iphone

我想从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]);

1 个答案:

答案 0 :(得分:1)

我可以证实这似乎是一个问题。虽然我能够成功调用removeObject,但是indexOfObject:返回了NSNotFound。我重写了测试用例,错误消失了。我想是远离CCArray的另一个原因。

我建议在这种情况下使用NSMutableArray。 slightly better performance of CCArray不会反映在更好的帧速率中,尤其是对于具有20个元素的数组。此外,正确的代码总是比速度更快但不正确的代码更好。