많은 책을 읽은 후, 장면을 바꿀 때 무엇을해야하는지에 대한 이해가 너무 많이 있다는 것을 알 수 있습니다. dealloc 메서드에서 모든 타이머를 해제해야합니까 ?? 또는 cocos2d는 그것을합니까 ??장면을 바꿀 때 타이머로 무엇을할까요?
은 내가 시작시 3 개 타이머를 가지고 :
[self schedule: @selector(contact:)];
[self schedule:@selector(tick:)];
[self schedule: @selector(randomsActions:) interval:0.1];
전 메뉴 (replaceScene를) 장면을 대체 befor을 나는이 수행합니다.
[self unschedule:@selector(randomsActions:)] ; //stop timer
[self unschedule:@selector(contact:)] ; //stop timer
[self unschedule:@selector(contact:)] ; //stop timer
하지만 충돌 (내가 본 사람들이 말하는 난을 그들을 스케줄 해제 할 필요가 없습니다) 그래서 난 내 의 dealloc이 시도
:
을 그것은 또한 두 번째 시간 (클래스의 충돌 : CCScheduler.m) 충돌[[CCScheduler sharedScheduler] unscheduleAllSelectorsForTarget: self];
내 할당 해제에
내가이 :(를 넣어 내가 ???해야합니까)
삭제 _contactListener;
[self removeAllChildrenWithCleanup : 예];
세계 삭제;
world = NULL;
[super dealloc];
여기에 무슨 일이 일어 났습니까? 장면을 바꿀 때 dealloc에서 수행해야하는 작업에 대해 누군가 나에게 알릴 수 있습니까? 내 타이머로 무엇을해야합니까 ???
감사합니다.
내 주요 문제는 내가 장면을 게임 메뉴에서 다시 이동하려고 할 때 충돌이었다, 단지 걱정할 필요가 없습니다, 빈 계속 그것을 sccheduler를 할당 해제 할 필요가 없습니다. CCScheduler.m 클래스에서 - (void) update : (ccTime) dt 메서드가 충돌합니다. 그게 왜? 타이머와 관련이 있습니까? – Curnelious
CCScheduler는 cocos2d의 내부 메커니즘에 의해 사용되고 있습니다. 같은 터치 이벤트 등 다른 부분에서 뭔가 잘못하고있는 방법을하지 않도록하십시오. – max9xs