Ho un frammento di codice come questo:NSTimer non sparare selettore quando aggiunto con scheduledTimerWithTimeInterval
m_timer = [NSTimer scheduledTimerWithTimeInterval:timeOutInSeconds
target:self
selector:@selector(activityIndicatorTimer:)
userInfo:nil
repeats:NO];
Quando io lo chiamo in questo modo il selettore non viene licenziato dopo le timeOutInSeconds dato. Tuttavia, se lo modifico come il seguente, il selettore viene chiamato due volte.
NSLog(@"Timer set");
m_timer = [NSTimer scheduledTimerWithTimeInterval:timeOutInSeconds
target:self
selector:@selector(activityIndicatorTimer:)
userInfo:nil
repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:m_timer forMode:NSRunLoopCommonModes];
Qualcuno potrebbe offrire qualche suggerimento su ciò che probabilmente sto facendo male?
sto utilizzando XCode 5.1, e sulla base 7.1.1 iPhone 4S
La mia ipotesi è che stai deposizione delle uova di questo timer fuori un thread in background senza runloop (la maggior parte non hanno uno) 'scheduledTimerWithTimeInterval' deve essere chiamato da un thread con un runloop (di solito il thread principale). Per aggiungere il timer al runloop come sei, dovresti usare "timerWithTimeInterval ...". –
Chiama '[m_timer fire]' dopo la prima opzione –
Grazie David, credo che tu avessi ragione. Con il tuo aiuto sembra che ho trovato il problema. Se desideri inviarlo come risposta, piuttosto che commentare, posso accettarlo. – xceph