0

我正在使用(并且必须使用)我没有来源的第三方框架。第三方框架处理创建经过身份验证的客户端/服务器连接并返回一对打开的 NSStream。我面临的挑战是 NSStreams 被安排在主线程上(创建 UI 可能变得无响应的情况 - 我想避免这种情况)。

在从第三方框架传递流时,没有正在进行的网络流量。所以,我想知道我是否可以取消安排和重新安排 NSStreams。

有谁知道是否可以取消安排打开的 NSStream 并将其重新安排在不同线程上的不同运行循环上?这会导致问题吗?那里有任何代码示例吗?

提前致谢!

亚伦

4

1 回答 1

0

如果我正确理解您的应用程序,这意味着您的应用程序接收到对特定流的引用,并且您负责阅读流中的所有内容。读取这些流应该是您通过 NSThread、NSOperation 或其他线程机制从应用程序强制进入后台的内容。

例子:

在您与此 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

}

这是一个简短的示例,说明如何为输入端执行此操作。您也可以以类似的方式为输出蒸汽排队工作。这应该使所有内容同时运行,并且您的应用程序保持响应。

于 2012-05-24T17:10:05.393 回答