Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在nsrunlop上调度流_Ios_Sockets_Nsrunloop_Nsinputstream_Nsoutputstream - Fatal编程技术网

Ios 在nsrunlop上调度流

Ios 在nsrunlop上调度流,ios,sockets,nsrunloop,nsinputstream,nsoutputstream,Ios,Sockets,Nsrunloop,Nsinputstream,Nsoutputstream,我一直在学习本教程,所有内容都正常运行,但文本中有一行我不理解: 我们的数据流必须持续准备好发送或接收数据。为了实现这一点,我们 必须计划流以在运行循环中接收事件。如果我们不分配运行循环 委托将阻止代码的执行,直到流中没有数据可读或可写,这是我们希望避免的情况 但是,如果我在代码中注释这些行: //[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; //[outputSt

我一直在学习本教程,所有内容都正常运行,但文本中有一行我不理解:

我们的数据流必须持续准备好发送或接收数据。为了实现这一点,我们 必须计划流以在运行循环中接收事件。如果我们不分配运行循环 委托将阻止代码的执行,直到流中没有数据可读或可写,这是我们希望避免的情况

但是,如果我在代码中注释这些行:

//[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
//[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
一切都会好起来的。我真的不明白为什么我必须在主运行循环中安排这个


在我看来,主线程上发生的所有事情都是在这个运行循环中处理的。所以,若我按下按钮,它将在主运行循环中处理。在这里,如果我不在主运行循环中安排此操作,字节仍然会被接收和发送,因此对我来说,这意味着它们在主运行循环中被处理。

您可以在任何您想要的运行循环中安排流。委托的回调方法将在这样一个线程中被调用,而该线程是被调度的。例如,我为POSInputStreamLibrary编写了一些单元测试,其中我的委托在某个工作线程中接收事件。您可以看到调度过程