2012-09-15 23 views
3

我用下面的代碼在主運行循環調度事件:調度NSStream事件不是主要的運行循環

[stream setDelegate:self]; 
[stream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 
[stream open]; 

我認爲這意味着NSStreamDelegate事件被調度在主運行循環中,因此如果頻率足夠高,可能會影響UI響應。在我的程序中,這似乎確實是這種情況 - 即使事件處理程序自己分離到後臺線程中也沒有做很多工作。

我將如何去執行除mainRunLoop之外的運行循環的調度?我是否需要創建一個線程?我可以直接創建一個NSRunLoop嗎?需要執行什麼設置?

回答

0

我的建議是使用併發操作。我在github上有一個演示程序,演示如何傳遞這樣的對象。你也會發現很多這樣的項目。然後,您可以使用帶有線程說明符的performSelector變體(這種操作的線程是持久的)。

op有一個運行循環,因此可以被消息傳遞,線程可以很容易地被取消,並且可以創建它們的倍數。

+0

不錯,但是如何在github中的「演示程序」 - 一個鏈接將不勝感激。 (嗯,至少是它的名字?) –

+0

@MottiShneor現在的代碼是3歲,但可能會有所幫助:https://github.com/dhoerl/Concurrent_NSOperations –

相關問題