在不是主运行循环的NSRunLoop上调度NSStream事件

时间:2012-09-15 20:55:52

标签: objective-c ios nsrunloop nsstream

我正在使用以下代码在主运行循环上调度事件:

[stream setDelegate:self];
[stream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[stream open];

我认为这意味着正在主运行循环上调度NSStreamDelegate个事件,因此如果频繁,可能会影响UI响应。这在我的程序中似乎就是这种情况 - 即使事件处理程序分离到后台线程而没有自己做很多工作。

我如何在mainRunLoop以外的运行循环上进行调度?我需要创建一个线程吗?我可以直接创建一个NSRunLoop吗?需要进行哪些设置?

1 个答案:

答案 0 :(得分:0)

我的建议是使用并发的nsoperstion。我在github上有一个演示应用程序,它显示了如何发送这样的对象。你也会发现很多这样的项目。然后,您可以使用带有线程说明符的performSelector变量(此类操作的线程是持久的)。

op有一个运行循环,因此可以被消息,一个线程,可以很容易地被取消,你可以创建它们的多个。