2013-04-25 11 views
7

ich eine Verbindung in einem Thread, so dass ich hinzufügen, es Schleife auf der Flucht alle Daten zu erhalten:Beenden einer NSRunLoop

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

Aber ich kann jede mögliche Weise nicht finden es

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

Wie kann ich diese Schleife stoppen?

Antwort

14

Sie können die Runloop von Core Fundation API stoppen:

CFRunLoopStop(CFRunLoopGetCurrent()); 
+0

funktioniert dies sehr gut. Vielen Dank! – almas

+0

Während ich dies zur Arbeit habe, bin ich mir nicht sicher, ob ich verstehe, wie das wirklich funktioniert? Führt eine Core Foundation Run Loop-Methode einen NSRunloop aus? – absessive

+0

'NSRunLoop' und' CFRunLoopRef' sind zwei Schnittstellen für die gleiche zugrunde liegende Struktur, @absessive (obwohl sie nicht "gebührenfrei überbrückt", wie es genannt wird). '' NSRunLoop currentRunLoop] 'und' CFRunLoopGetCurrent() 'bieten Ihnen im Wesentlichen Zugriff auf die gleiche Sache, aber nur die CF-API hat einen" Stop "-Button. –