Спрайт массива init странная проблема - PullRequest
0 голосов
/ 27 февраля 2011

Я получил класс SpriteObject:

SpriteObject.h

#import "cocos2d.h"

@interface SpriteObject : CCNode {

    int spriteType;
}

-(id) init;

@property(readwrite, assign) int spriteType;

@end

SpriteObject.mm

#import "SpriteObject.h"

@implementation SpriteObject
@synthesize spriteType;

-(id) init
{
    if ((self = [super init]))
    {

    }

    return (self);
}
@end

Затем в классе HelloScene я получил val SpriteObject* gridSprites [3] [3];

HelloWorldScene.h

@interface HelloWorld : CCLayer
{
    SpriteObject *gridSprites[3][3];
}

Я пытался инициировать gridSprites следующим образом:

HelloWorldScene.m

-(id) init
{
    if( (self=[super init] )) {

        for(int i =0; i< 3 ; i++)
        {
            for(int j =0; j< 3 ; j++)
            {
                SpriteObject * s = [[SpriteObject alloc] init];
                gridSprites[i][j] = s;
                [s release];

                gridSprites[i][j].spriteType = -1;
            }
        }
    }
    return self;
}

Если я собираю && запускаю его, все нормально, но если я устанавливаю точку останова в строке "gridSprites [i] [j] .spriteType = -1;" и пытаюсь перешагнуть через нее, приложение вылетает, и яВы получите сообщение об ошибке:

Current language:  auto; currently objective-c
Program received signal:  ?EXC_BAD_ACCESS?.

Я схожу с ума, кто-нибудь может мне помочь, заранее спасибо ...

1 Ответ

0 голосов
/ 27 февраля 2011

Вы не можете освободить, если вы все еще хотите получить доступ к двойному массиву ..

отпусти в сделку ..

означает:

-(void)dealloc
{
for(int i = 0; i<3 ; i++)
{
   for(int j = 0; j<3; j++)
    {
      [gridSprites[i][j]release];
    }
}
[super dealloc];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...