0
我有一個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];
}
我試圖給init 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;」處設置斷點並嘗試跳過它,則 應用程序崩潰,我GOR一個錯誤信息說:
Current language: auto; currently objective-c
Program received signal: ?EXC_BAD_ACCESS?.
我駕駛堅果,任何人可以幫助我在這裏,感謝 提前...
您創建一個SpriteObject並將gridSprite [i] [j]指向s,但在此之後您釋放s。這會使gridSprite [i] [j]指針被移除,不再指向s,因此當您嘗試再次訪問gridSprites [i] [j] .spriteType = -1時。該對象不能被發現這就是爲什麼訪問不當。 – 2011-02-28 03:42:03