iOS NSMutableArray的精灵错误访问

时间:2014-05-12 18:40:46

标签: objective-c arrays sprite-kit exc-bad-access skspritenode

我之前在敌人的船首中为我的高级敌人船只填充了一个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而不会收到这些内存泄漏吗?

0 个答案:

没有答案