Я объявил NSTimer
в своем заголовке UIViewController
следующим образом:
NSTimer *mainTimer;
И я запускаю его в реализации метода viewWillAppear
, поэтому:
mainTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateAll) userInfo:nil repeats:YES];
У меня есть кнопка, которая переворачивает представление (стандартный шаблон служебного приложения) с именем showInfo
, и она имеет команду:
[mainTimer invalidate];
Когда мое приложение запускается, таймер запускается и работает. Когда я нажимаю эту кнопку в первый раз, и вид переворачивается, таймер останавливается. Когда я закончу с flipSideViewController
и снова появится главный вид, таймер снова запустится. Пока хорошо. Проблема в том, что последующее нажатие кнопки (и, следовательно, вызов [mainTimer invalidate]
не приводит к остановке таймера. Он просто продолжает работать. Я могу переворачивать все, что хочу, и он продолжает обновляться. Для ухмылок я ставлю два invalidate
звонит подряд, но это вылетает.
UPDATE:
Нашел проблему. По возвращении из flipSideViewController
я сам звонил viewWillAppear
, что бы создать таймер. Цикл выполнения также автоматически вызывает viewWillAppear
, поэтому был создан второй таймер. Это произошло только после того, как я однажды посетил оборотную сторону, поэтому таймер (единичный случай) нормально останавливался, когда я переворачивал в первый раз. Странно, что я могу создать два таймера с одним и тем же именем ...