2013-04-25 13 views
7

Ho una connessione in un thread, così lo aggiungo al circuito corsa per ottenere tutti i dati:Interruzione di una NSRunLoop

[[NSRunLoop currentRunLoop] run]; 
    [connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

Ma io non riesco a trovare un modo per fermarlo

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
    if([NSRunLoop currentRunLoop]){ 
     [[NSRunLoop currentRunLoop] cancelPerformSelectorsWithTarget:self]; 
    } 
    [connection cancel]; 
} 

Come posso interrompere questo ciclo?

risposta

14

È possibile interrompere il runloop da Core Fondazione API:

CFRunLoopStop(CFRunLoopGetCurrent()); 
+0

questa grande opera. Grazie! – almas

+0

Mentre devo farlo funzionare, non sono sicuro di capire come funzioni davvero? Un metodo Loop Run di Core Foundation termina un NSRunloop? – absessive

+0

'NSRunLoop' e' CFRunLoopRef' sono due interfacce per la stessa struttura sottostante, @absessive (sebbene non siano "a pagamento senza pedaggio" come viene chiamato). Quindi '[NSRunLoop currentRunLoop]' e 'CFRunLoopGetCurrent()' forniscono essenzialmente accesso alla stessa cosa, ma solo l'API CF ha un pulsante "stop". –

Problemi correlati