5
我還沒有找到任何體面的文檔來解釋NSStream的線程過程。具體來說,讓我們來看看NSInputStream。在Objective-C中對我進行線程處理目前是個謎,因爲它看起來很簡單。scheduleInRunLoop - 線程網絡連接
什麼,我的問題是指此行主要是:
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
您可以指定運行的循環輸入流將運行,我認爲是很涼爽。問題是,如果我想讓輸入和輸出流在他們自己的線程中運行,並且都在單個類中實例化,比如說Connection,那麼如何讓它們在自己的線程中運行?
我問的原因是因爲代表。以前我們會完成[inputStream setDelegate:self]
這意味着我們必須聲明stream:handleEvent
來處理傳入/傳出的數據。因此,最終我的問題是,如果您有一個類設置輸入和輸出流,那麼您如何將每個流都線程化並將處理流事件的責任委派給當前類?
下面是一些代碼來對終日啃食:
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
我想以下幾點:
- 您不能委派在當前類兩個線程的責任,你必須委託來分離對象。
- 一個線程會爲兩個流做? (我個人不這麼認爲,因爲輸入/輸出將同時運行)
- 我在想這個錯誤,你可以創建一個單獨的運行循環,並調用scheduleRunLoop針對一些單獨的線程?
任何想法?
-1只是代碼不是答案。你必須解釋它。即使只是一些關於你爲什麼要做你正在做的事情的解釋。 – Fogmeister 2014-02-11 15:45:58
有點解釋會很好。我強迫自己不要低估這一點.. – 2015-06-25 21:17:49