2011-08-15 2 views
1

버튼을 누르고있는 동안 NSTimer가 실행되는 응용 프로그램이 있습니다. 그러나 사용자가 앱을 종료하면 (다중 작업) 타이머가 계속 이동합니다. 앱을 종료 할 때 시간을 멈추고 무효로 설정하려면 어떻게 무효화 할 수 있습니까? 멀티 태스킹을 비활성화 할 수 있습니까? 감사. 그것은이 ViewController.h 에서 만들어지기 때문에, 내가 NSTimer는 AppDelegate에 참조 할 것을 얻는다 방법 AppDelegate에 사용이 포함됩니다 경우 P.S 내가 사용 피곤이 : 어쨌든사용자가 종료 할 때 NSTimer를 무효로하고 무효로 설정합니다.

#import "Some AppNameViewController.h" 

, 사전에 감사합니다!

답변

7
  • 당신은 당신의 plist YES로 UIApplicationExitsOnSuspend을 설정하여 멀티 태스킹을 비활성화 할 수 있습니다.

  • 더욱 세련된 해결책은 타이머가있는 클래스에있는 UIApplicationWillResignActiveNotification 또는 UIApplicationDidEnterBackgroundNotification을 수신하는 것입니다. 해당 알림 중 하나가 invalidatenil 타이머에 게시됩니다.

2

NSNotificationCenter를 사용하여 앱을 종료 할 때 보내는 메시지의 옵서버로 타이머를 추가하기 만하면됩니다. 예 :의 ViewController에서

: 대리자에서

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    [[NSNotificationCenter defaultCenter] addObserver:self.myTimer selector:@selector(invalidate) name:@"killTheTimer" object:nil]; 
} 

:

- (void)applicationWillResignActive:(UIApplication *)application{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"killTheTimer" object:nil]; 
} 
+0

멋지다 !!!!!! – Kjuly

관련 문제