如果我正確理解您的應用程序,這意味着你的應用程序接收到特定流的引用,並且你負責對蒸閱讀一切。讀取這些流應該是你通過NSThread,NSOperation或其他線程機制從應用程序強制到後臺的東西。
例子:
在任何文件你tieing在此NSInputStream:
@property (strong, nonatomic) NSInvocationOperation *parseOp;
(id)startInputRead:(NSInputStream *)input {
if([input hasBytesAvailable]) {
self.parseOp = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(readAndStoreInput:) object:inputStream];
}
如果你的讀者是這樣的:
(void)readAndStoreInput:(NSInputSteam*) input{
//process your input steam into your system in the background
}
這是多麼你將一個簡短的例子爲輸入端做這個。你也可以用類似的方式排隊輸出蒸汽。這應該使所有內容都能同時運行,並且您的應用可以保持響應。
它實際上是在線程中調度它還是阻塞?如果它只是阻塞,你可以在函數調用中使用NSInvocationOperation來阻止它。 – heckman
@heckman我不確定我是否理解你的問題。我收到一個NSInputStream和一個NSOutputStream。當我收到NSStreamStatusOpen時,它們都處於狀態。在我開始發送東西之前,沒有任何流量在流上,所以它們有效地停滯。在主線程中,當代理消息被接收/服務時,他們將創建阻塞情況。 – xyzzycoder
請參閱下面的回覆。 – heckman