2011-10-28 37 views
4

如何同步調用NSStream以獲取結果?如何同步調用NSStream

目前我公司在其委託方法

`(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- 
+0

爲什麼你想要同步獲取流數據? – TheEye

回答

7

NSStream一個得到一個異步回調是一個抽象類,無論是讀取或向流寫入數據。要實際訪問數據,您需要一個具體的子類,如NSInputStreamNSOutputStream(或您的自定義子類NSStream)。要讀取NSInputStream調用read:maxLength:中的數據。您可能需要輪詢流,詢問是否有新數據可用,請致電hasBytesAvailable。一個NSOutputStream類似於write:maxLength:hasSpaceAvailable方法。

您受到iOS文檔的高度鼓勵以避免輪詢,並使用運行循環調度來代替通過響應異步回調委託方法。

+1

如果您在單獨的線程中運行,則不需要輪詢。您只能從輸入流中讀取數據,它將阻塞,直到數據可用/數據流關閉/發生錯誤。響應模擬posix行爲,其中0表示流關閉,-1表示發生錯誤。正數表示從流中讀取的實際字節數。 – JugsteR