我正在使用以下代码在主运行循环上调度事件:
[stream setDelegate:self];
[stream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[stream open];
我认为这意味着
NSStreamDelegate
事件被安排在主运行循环上,因此如果足够频繁,可能会影响 UI 响应。这在我的程序中似乎确实如此 - 即使事件处理程序分离到后台线程中而没有自己做太多工作。我将如何在
mainRunLoop
以外的运行循环上进行调度?我需要创建一个线程吗?我可以直接创建一个 NSRunLoop 吗?需要进行什么设置? 最佳答案
我的建议是使用并发 nsoperstion。我在 github 上有一个演示应用程序,它展示了如何向这样的对象发送消息。你也会发现很多这样的项目。然后,您可以使用带有线程说明符的 performSelector 变体(此类操作的线程是持久的)。
op 有一个运行循环,因此可以发送消息,一个线程,可以轻松取消,并且您可以创建多个它们。
关于objective-c - 在非主运行循环的 NSRunLoop 上调度 NSStream 事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12441546/