5
我还没有找到任何体面的文档来解释NSStream的线程过程。具体来说,让我们来看看NSInputStream。在Objective-C中对我进行线程处理目前是个谜,因为它看起来很简单。scheduleInRunLoop - 线程网络连接
什么,我的问题是指此行主要是:
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
您可以指定运行的循环输入流将运行,我认为是很凉爽。问题是,如果我想让输入和输出流在他们自己的线程中运行,并且都在单个类中实例化,比如说Connection,那么如何让它们在自己的线程中运行?
我问的原因是因为代表。以前我们会完成[inputStream setDelegate:self]
这意味着我们必须声明stream:handleEvent
来处理传入/传出的数据。因此,最终我的问题是,如果您有一个类设置输入和输出流,那么您如何将每个流都线程化并将处理流事件的责任委派给当前类?
下面是一些代码来对终日啃食:
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
我想以下几点:
- 您不能委派在当前类两个线程的责任,你必须委托来分离对象。
- 一个线程会为两个流做? (我个人不这么认为,因为输入/输出将同时运行)
- 我在想这个错误,你可以创建一个单独的运行循环,并调用scheduleRunLoop针对一些单独的线程?
任何想法?
-1只是代码不是答案。你必须解释它。即使只是一些关于你为什么要做你正在做的事情的解释。 – Fogmeister 2014-02-11 15:45:58
有点解释会很好。我强迫自己不要低估这一点.. – 2015-06-25 21:17:49