我正在使用(并且需要使用)我没有来源的第三方框架。第三方框架处理创建经过身份验证的客户端/服务器连接并回送一对打开的NSStream。我遇到的挑战是NSStreams安排在主线程上(创建UI可能无响应的情况 - 我想避免)。
当流从第三方框架切换时,没有网络流量正在进行中。所以,我想知道我是否可以取消安排和重新安排NSStreams。
有没有人知道是否有可能取消安排打开的NSStream并在另一个线程上的另一个运行循环上重新安排它?这会引起问题吗?那里有代码示例吗?
提前致谢!
亚伦
答案 0 :(得分: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
}
这是一个简短的例子,说明如何为输入端执行此操作。您也可以以类似的方式排队输出蒸汽的工作。这应该使所有内容同时运行,并且您的应用程序保持响应。