2012-07-20 9 views
0

나는 게임을 만들고 플레이어가 이기면 다른보기 컨트롤러를 루트보기 컨트롤러로 설정하고 있습니다. 해당 뷰 컨트롤러에서 만든보기 컨트롤러 objective-c를 삭제하십시오

finishViewController*fvc=[[finishViewController alloc] initFor:0]; 
     [UIApplication sharedApplication].delegate.window.rootViewController=fvc; 

그러나 NSTimer는 작업을 계속하고 나는 다시 뷰 컨트롤러를 실행할 때 이상한 및 도청 작동합니다. 내가 viewBuffer를 root 뷰 컨트롤러로 설정할 때 완전히 dealloc 할 수있는 방법이 있습니까? 이것은 쉬운 질문 일 수 있습니다. Objective-c에 다소 새로운 것 같습니다.

답변

1

원하는 컨트롤러에 따라 더 이상 해당 컨트롤러를 할당하지 않아도됩니다. 더 이상 NSTimer 컨트롤러를 할당 해제해도 여전히 해당 컨트롤러를 사용하지 않아도됩니다. [myNSTimer invalidate] 메시지를 보내고 [myNSTimer release]를 사용하여 해제하지 않는 한 계속 실행됩니다 (타이머를 유지해야하는 경우에만 해제해야 함). ViewController의 dealloc 메소드에서이 값을 해제하십시오. 당신은 ARC를 사용하는 경우

당신이 필요로하는 모든입니다 : 당신이의 ViewController 다시 사용하고 해제하고자하지 않을 경우

- (void)dealloc { 
    [myNSTimer invalidate]; 
} 

가 다시이 아니라.

[myNSTimer invalidate]; 

이를 : 당신이 그것을 해제하지 않으려면, 당신은 단순히 (난 당신이 더 나은 것 네비게이션 컨트롤러 나에게 모달보기를 사용으로 수행한다고 생각하지 않습니다) 새 rootViewController를 설정하기 전에이 작업을 수행 할 수 있습니다 NSTimer를 중지합니다.

+0

작업 시간이 작동하지 않습니다. 어쩌면 내보기 컨트롤러 할당이 해제되지 않습니다? – Mathemage

관련 문제