2014-01-31 4 views
0

В определенном состоянии в программе, я вызываю метод с этим, как тело:Почему мой селектор NSTimer никогда не срабатывает? Это потому, что в GLKitViewController вместо UIViewController?

self.timeStartedDisplayingTime = [NSDate date]; 
self.stopButton.enabled = YES; 

[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updateElapsedTime:) userInfo:nil repeats:YES]; 

Я подтвердил, что этот метод действительно называется.

Однако тело Соответствующий селектора:

NSTimeInterval elapsedTimeDisplayingECG = [self.timeStartedDisplayingECG timeIntervalSinceDate:[NSDate date]]; 
self.elapsedTimeValueLabel.text = [NSString stringWithFormat:@"%f", elapsedTimeDisplayingECG]; 

никогда не вызывается. Я поставил точку останова, и он никогда не был достигнут. Почему это точно? Это в GLKitViewController, если это актуально.

+0

Вы убедитесь, что код, который запускает таймер вызывается? –

+0

Взгляните на эту тему, это может указывать на настоящую причину. Http://stackoverflow.com/questions/10080932/glkviewcontrollerdelegate-getting-blocked – Arcanfel

ответ

-1

Ваш таймер отбрасывается сразу после его создания. Вы должны сохранить где-то.

Определить свойство

@property (strong) NSTimer *myTimer;

и назначить таймер для этого:

self.myTimer = [NSTimer scheduledTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(updateElapsedTime:) userInfo:nil repeats:YES];

+0

таймеры сохраняются в runloop до тех пор, пока они не будут уволены или недействительны, так что это не так –