我之前在敌人的船首中为我的高级敌人船只填充了一个NSMutableArrays子弹精灵。我没有记忆问题。当我尝试将SKSpriteNodes单独添加到我的boss对象时,我得到exc_bad_access错误,我相信它来自arc并尝试访问已发布的数组。
@interface enemyShipAdvanced : NSObject{
NSMutableArray *bulletNodeArray;//holds array of SkSpriteNode bullets.
}
@property NSMutableArray *bulletNodeArray;
@implementation enemyShipAdvanced
@synthesize bulletNodeArray;
- (id)init
{
self = [super init];
bulletNodeArray = [[NSMutableArray alloc] init];
//puts 4 sprite nodes in the array.
bulletNodeArray = [NSMutableArray arrayWithObjects: [SKSpriteNode spriteNodeWithImageNamed:@"bulletAdv.png"],[SKSpriteNode spriteNodeWithImageNamed:@"bulletAdv.png"], [SKSpriteNode spriteNodeWithImageNamed:@"bulletAdv.png"], [SKSpriteNode spriteNodeWithImageNamed:@"bulletAdv.png"], nil];
return self;
}
//上面的代码工作正常,没有内存错误。
@interface enemyBoss : NSObject {
NSMutableArray *bulletNodeArray;//holds array of SkSpriteNode bullets.
}
@property (strong, nonatomic) NSMutableArray *bulletNodeArray;
@implementation enemyBoss
@synthesize bulletNodeArray;
- (id)init
{
self = [super init];
self.bulletNodeArray = [[NSMutableArray alloc] init];
SKTextureAtlas *electricAtlas = [SKTextureAtlas atlasNamed:@"electricImages"];
SKTexture *e0 = [electricAtlas textureNamed:@"electricShot0.png"];
for(int i = 0; i < 12; i++){//should create an array of 12 sprites that the boss can use.
SKSpriteNode *electricSprite = [[SKSpriteNode alloc] initWithTexture:e0];
[self.bulletNodeArray addObject:electricSprite];//adds bullet sprite to Mutable array.
}
//上面的敌人老板代码给出了exc_bad_access错误的一半时间。我知道纹理图集不是问题,因为我尝试以相同的方式添加常规Sprite,但仍然遇到了同样的问题。我可以在这样的循环中填充NSMutableArray而不会收到这些内存泄漏吗?