Cocos2D - CCSprites的NSMutableArray

时间:2010-06-03 22:47:54

标签: iphone objective-c cocos2d-iphone

我尝试在NSMutableArray中存储一些CCSprites,但游戏立即崩溃,我猜它是一个内存问题,我也猜测CCSprites是自动释放对象?

那么,我如何在NSMutableArray中存储多个CCSprit?

我想做的目的是存储一个数组中的所有敌人,然后在我的时间步长函数中循环它们并更新它们的位置和诸如此类的东西。

我试图做的事情:

NSMutableArray *enemies = [NSMutableArray array];
[enemies addObject: [CCSprite spriteWithFile: @"hello.png"]];

当我尝试使用-objectAtIndex:

尝试访问精灵时崩溃

1 个答案:

答案 0 :(得分:5)

阵列是自动释放的。如果您稍后尝试在另一个上下文中访问它,它可能已经死亡。因此,要么保留它,要么不使用便捷数组方法,但[[NSMutableArray alloc] init]显式。

或将其存储在保留属性中(在这种情况下一定要使用setter方法,即self.ivar = enemies;

无论你采取哪种方式,都要小心不要“过度保留”你的数组,即使用alloc / init和retain setter,否则你的数组永远不会再被释放(更正确的是它只能通过“buggy”释放“双重释放”。