2014-10-23 3 views
0

SpriteKit으로 게임 개발을 처음 접했고 모든 것이 지금까지 괜찮 았지만 실제로 메모리 관리 부분은 없습니다.SpriteKit 메모리 문제

레벨 선택기 역할을하는 첫 번째 UIViewController와 게임의 SKScene을 제공하는 두 번째 UIViewController를 만들었습니다. 문제는 SKScene에서 수준 선택기로 돌아가서 메모리가 해제되지 않은 경우에 나타납니다.

게임 SKScene에서 레벨 선택기로 이동하기 위해 뒤로 버튼을 밀면 두 번째 UIViewController에 세그먼트 수행을 알리는 알림을 게시합니다.

//SKScene 
[self removeAllActions]; 
[self removeAllChildren]; 
[self removeFromParent]; 

[[NSNotificationCenter defaultCenter]postNotificationName:@"toLevelSelector" object:nil userInfo:nil]; 

//Second UIViewController 
- (void)toLevel:(NSNotification *)notif 
{ 
    [self performSegueWithIdentifier:@"toLevelSelector" sender:self]; 
} 

skview 또는 skscene을 메모리에서 해제해야하는시기와 장소에 대해 더 잘 이해할 수 있습니까?

+0

장면이 공개되지 않았다고 어떻게 결정했는지 설명 할 수 있습니까? 두 뷰 컨트롤러가 SKView의 다른 인스턴스를 생성합니까 (권장하지 않음)? – LearnCocos2D

답변

0

SpriteKit을 보유하고있는보기 컨트롤러를 닫지 않았기 때문에 메모리가 해제되지 않았다고 생각합니다. UIViewControllers에 메뉴가있는 게임을 만들려고 할 때 SpriteKit 게임이 시작될 때 닫는 게임이 타이머, 소리, 음악 등을 종료하지 않는다는 것을 경험했습니다. MainMenuViewController라는 UIViewController가 있으며 SpriteKit Game을 실행하는 GameViewController를 호출하는 버튼입니다. 따라서 게임을 완전히 종료하려면 게임 종료 버튼에이 방법을 구현하십시오.

[(GameViewcontroller *)self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];