2013-04-25 16 views
7

mam połączenia w wątku, więc dodam go do pętli biegu, aby uzyskać wszystkie dane:Wyłączanie NSRunLoop

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

Ale nie mogę znaleźć żadnego sposobu, aby zatrzymać

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

Jak mogę zatrzymać tę pętlę?

Odpowiedz

14

można zatrzymać runloop przez rdzeń Fundation API:

CFRunLoopStop(CFRunLoopGetCurrent()); 
+0

to działa świetnie. Dzięki! – almas

+0

Podczas gdy mam to do pracy, nie jestem pewien, czy rozumiem, jak to działa? Czy metoda Core Foundation Run Loop kończy działanie NSRunloop? – absessive

+0

'NSRunLoop' i' CFRunLoopRef' to dwa interfejsy dla tej samej podstawowej struktury, @absessive (chociaż nie są "bez opłat mostowych" jak się nazywa). Tak więc '[NSRunLoop currentRunLoop]' i 'CFRunLoopGetCurrent()' zasadniczo zapewniają dostęp do tego samego, ale tylko interfejs API CF ma przycisk "stop". –