Cocos2D - CCSprites的NSMutableArray

Joh*_*sen 1 iphone objective-c cocos2d-iphone

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

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

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

我试图做的:

NSMutableArray *enemies = [NSMutableArray array];
[enemies addObject: [CCSprite spriteWithFile: @"hello.png"]];
Run Code Online (Sandbox Code Playgroud)

当我尝试使用-objectAtIndex到达精灵时崩溃:

Eik*_*iko 5

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

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

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