我的应用程序使用 NSInputStream,如下所示:
inputStream.delegate = self;
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[readStream open];
并委托(delegate):
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
它工作正常,但我做的所有其他请求,它排队直到第一个完成。
我一次可以做一个,没有办法做多个并发请求。
有解决办法吗?
谢谢
这个解决方案对我不起作用:
https://stackoverflow.com/a/15346292/1376961
更新:
我的服务器是否无法处理来自同一来源的多个连接。
最佳答案
您将需要在单独的线程中创建流以使它们能够同时工作。我假设您有一个方法可以设置您提到的 inputStream:
- (void)openStreamInNewThread {
[NSThread detachNewThreadSelector:@selector(openStream) toTarget:self withObject:nil];
}
- (void)openStream {
NSInputStream *inputStream;
// stream setup
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSRunLoopCommonModes];
}
请注意
[NSRunLoop currentRunLoop]
将返回当前线程的运行循环。因此,您让新创建的流在单独的线程中运行,同时在它们自己的线程中加载数据。
关于iOS 如何执行多个 NSInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587831/