2013-04-25 42 views
7

我有一個線程的連接,所以我將它添加到運行循環來獲取所有數據:停止的NSRunLoop

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

但我找不到任何辦法阻止它

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

如何停止此循環?

回答

14

您可以通過核心基金會API停止runloop:

CFRunLoopStop(CFRunLoopGetCurrent()); 
+0

這個偉大工程。謝謝! – almas 2013-07-03 22:43:42

+0

雖然我有這個工作,我不知道我明白這是如何工作的? Core Foundation Run Loop方法是否終止NSRunloop? – absessive 2013-10-29 17:51:13

+0

'NSRunLoop'和'CFRunLoopRef'是同一個底層結構的兩個接口,@absessive(儘管它們不是所謂的「免費橋接」)。所以'[NSRunLoop currentRunLoop]'和'CFRunLoopGetCurrent()'基本上爲您提供了相同的功能,但只有CF API有一個「停止」按鈕。 – 2014-09-08 19:24:57