這是我現在面臨的問題的簡化版本。 我做了2個空CCScene 1 & 2並將CCLayer 1 & 2添加到它們各自的場景中。 我還添加了觸摸功能,使用CCDirector的替換場景從場景1切換到場景2。Cocos2d-iphone,在更換場景時不調用dealloc
但是,dealloc在替換場景中從未被調用過。
// scene & layer 2 are exactly the same as 1
@implementation MainScene
-(void)dealloc {
NSLog(@"scene dealloc");
[super dealloc];
}
-(id)init {
self = [super init];
if (self) {
layer = [[MainLayer alloc]init];
[self addChild:layer];
[layer release];
NSLog(@"test: %i", [layer retainCount]); //1
}
return self;
}
@implementation MainLayer
-(void)dealloc {
NSLog(@"layer dealloced");
[super dealloc];
}
-(id)init {
self = [super init];
if (self) {
self.isTouchEnabled = YES;
NSLog(@"test %i", [self retainCount]); //1
}
return self;
}
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"test %i", [self retainCount]); //2 --> ????
[[CCDirector sharedDirector] replaceScene:[[SecScene alloc]init]];
}
此外,當我觸摸屏幕時,NSLog報告圖層的剩餘量爲2。這甚至是假設發生?任何人都可能告訴我我做錯了什麼,或者它只是我誤解,在調用dealloc之前retainCount需要爲0?
這個問題正在導致我的主遊戲程序崩潰,只是通過各種場景/層之間切換靜態精靈(和一些小動作)一遍又一遍。
提示:使用自動釋放和饒了自己很多麻煩與內存管理! – LearnCocos2D 2010-08-29 08:39:18