Остановить, сделать недействительным и установить Nil a NSTimer при выходе пользователя - PullRequest
1 голос
/ 16 августа 2011

У меня есть приложение, в котором работает NSTimer, пока нажата кнопка. Однако, если пользователь выходит из приложения (многозадачность), таймер продолжает работать. Как я могу сделать его недействительным, чтобы время остановилось и было установлено равным нулю при выходе из приложения. Можно ли отключить многозадачность? Благодарю. P.S Если это связано с использованием AppDelegate, как мне получить этот NSTimer для ссылки в AppDelegate, потому что он создается в ViewController.h Я устал использовать:

#import "Some AppNameViewController.h"

В любом случае, спасибо заранее!

Ответы [ 2 ]

7 голосов
/ 16 августа 2011
  • Вы можете отключить многозадачность, установив для UIApplicationExitsOnSuspend значение ДА в своем списке.

  • Более элегантным решением является прослушивание UIApplicationWillResignActiveNotification или UIApplicationDidEnterBackgroundNotification в классе с таймером. Когда любое из этих уведомлений публикуется invalidate и nil ваш таймер.

2 голосов
/ 16 августа 2011

Вы можете использовать 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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...