2012-06-22 16 views
7

Ho un NSRunLoop nella mia app collegata ad un timer:Cosa succede al mio NSRunLoop e al timer quando l'app entra in background e restituisce?

NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(onUpdateTimer) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes]; 

Quando l'applicazione va in fondo, cosa succede a questo runloop? Scompare, ovvero dovrei ricrearlo in applicationDidBecomeActive:?

risposta

8

È necessario interrompere i timer quando l'app è sospesa e riavviarli in -applicationDidBecomeActive:. Vedere "Cosa fare quando si verifica un'interruzione" in Responding to Interruptions. Non devi preoccuparti del ciclo di esecuzione, però - il sistema operativo si prenderà cura di quella parte.

+0

OK, quindi non è necessario arrestare manualmente il runloop. Dovrò crearne uno su applicationDidBecomeActive: usando lo stesso codice? – DGund

+1

No. Provalo: il tuo ciclo di esecuzione dovrebbe andare bene. – Caleb

+0

Ricordare che le chiamate a sospensione e le chiamate a applicationDidBecomeActive non sono necessariamente bilanciate una per una, quindi non mettere in coda le cose con impazienza in applicationDidBecomeActive senza alcuna intelligenza. – Gruntcakes