一个开放的,但不活跃的,在主线程上调度的NSStream可以移动到不同的线程?

我正在使用(而且需要使用)我没有源代码的第三方框架。 第三方框架处理创build一个authentication的客户端/服务器连接,并交回一对开放的NSStreams。 我所面临的挑战是在主线程上安排NSStreams(创buildUI可能无响应的情况 – 我想避免这种情况)。

在stream从第三方框架中被移交的时候,没有networkingstream量正在进行。 所以,我想知道是否可以不计划和重新安排NSStreams。

有谁知道是否有可能取消调度一个开放的NSStream并重新安排在另一个线程上的另一个运行循环? 会造成问题吗? 那里有代码示例吗?

提前致谢!

亚伦

如果我正确理解你的应用程序,这意味着你的应用程序接收到特定stream的引用,并且你负责阅读蒸汽上的所有内容。 读取这些stream应该是你通过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 } 

这是一个简单的例子,你将如何做到这一点的input端。 你也可以用类似的方式排队输出蒸汽。 这应该使所有的事情同时运行,你的应用程序保持响应。