iOS 如何执行多个 NSInputStream

标签 ios nsthread nsstream nsinputstream nsoutputstream

我的应用程序使用 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/

相关文章:

ios - 在 OSX 10.12.1 上构建 'ionic build ios' 失败

ios - 分组 UITableView 下面的灰色区域

ios - 如何根据另一个单元格的值激活 uitableview 中的一个单元格?

ios - UI设计、iOS开发如何通过队列/NSThread处理并发

cocoa-touch - 将 SSL 添加到 iOS 应用程序同步

ios - Objective C 中的 TCP 套接字设置

iOS:以编程方式将 textview 字体设置为 body

ios - 如何使用调度或操作队列动态更改后台操作优先级。

ios - objective-c : Autoreleased objects between threads?

ios - Objective C NSStream 连接总是被拒绝