2013-04-25 16 views
7

Tôi có một kết nối trong một chủ đề, vì vậy tôi thêm nó vào vòng lặp chạy để có được tất cả dữ liệu:Dừng một NSRunLoop

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

Nhưng tôi không thể tìm thấy bất cứ cách nào để ngăn chặn nó

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

Làm thế nào tôi có thể ngừng vòng lặp này?

Trả lời

14

Bạn có thể ngừng runloop bởi Core fundation API:

CFRunLoopStop(CFRunLoopGetCurrent()); 
+0

này làm việc tuyệt vời. Cảm ơn! – almas

+0

Trong khi tôi có điều này để làm việc, tôi không chắc tôi hiểu làm thế nào điều này thực sự hoạt động? Phương pháp chạy vòng lặp nền tảng lõi có chấm dứt một NSRunloop không? – absessive

+0

'NSRunLoop' và' CFRunLoopRef' là hai giao diện cho cùng cấu trúc cơ bản, @absessive (mặc dù chúng không phải là "cầu nối miễn phí" khi được gọi). Vì vậy, '[NSRunLoop currentRunLoop]' và 'CFRunLoopGetCurrent()' về cơ bản cung cấp cho bạn quyền truy cập vào cùng một điều, nhưng chỉ có API CF có nút "dừng". –

Các vấn đề liên quan