我在启动时有3个计时器:
[self schedule: @selector(contact:)];
[self schedule:@selector(tick:)];
[self schedule: @selector(randomsActions:) interval:0.1];
因为我将场景替换为菜单(replaceScene),我这样做:
[self unschedule:@selector(randomsActions:)] ; //stop timer
[self unschedule:@selector(contact:)] ; //stop timer
[self unschedule:@selector(contact:)] ; //stop timer
但它崩溃了。(我看到有人说我不必安排他们吗?)
所以我在 dealloc :
中尝试了这个[[CCScheduler sharedScheduler] unscheduleAllSelectorsForTarget: self];
第二次崩溃(在课堂上崩溃:CCScheduler.m)
在我的dealloc我也把它:(我需要吗?)
删除_contactListener;
[self removeAllChildrenWithCleanup: YES];
删除世界;
world = NULL;
[super dealloc];
这里发生了什么? 有人可以让我知道在更换场景时应该在dealloc中做些什么吗? 怎么办我的计时器?
谢谢。
答案 0 :(得分:2)
当您替换场景时,COCOS2d会自动释放您为特定场景或图层启动的所有调度程序。这就是为什么你写[self scheduler:...] ;. Cocos2d Scheduler与NSTimer略有不同。
你不需要对sccheduler进行dealloc只是保持空白,不用担心,
- (void)dealloc {
//memory deallocation
[super dealloc];
}