挖了一天以上。。。Apple,Google,Slideshare和stackoverflow。但是关于NSRunLoop仍然不清楚。
默认情况下,每个线程都有一个运行循环。应用程序mainThread具有mainRunLoop。
1.如果MainRunLoop获取输入事件,是否正在创建新线程来执行它?然后创建另一个runLoop?那么多线程和多个runLoop如何工作?通信?
2.如果runLoop没有输入事件/任务,它将进入睡眠状态。RunLoop何时结束?
3.为什么我应该关心runLoop?
4.我可以在哪里使用它?
我想念我无法理解生命周期的地方?

最佳答案

让我们来看看您的清单:


错误。线程没有内置的runloop。它们需要手动创建。
Runloop不会创建另一个线程,它会立即执行一个事件。这就是为什么在主线程中可以看到锁定接口的原因-通过在主线程中执行繁重的任务(iPhone中的UI在主线程上运行)。 Runloops可以在mac端口的帮助下相互通信。
Runloop在第一个事件到来之前就进入睡眠状态,然后唤醒并结束。唯一的例外-计时器,但不会运行循环。 Runloop需要在Event之后(在循环中)每次启动。如果调用运行,则已经存在一个内置循环。
可用于创建一些线程,这些线程必须定期跟踪或执行某些操作。例如,您可以在运行循环时创建一个线程,然后其他线程可以通过performSelector执行其选择器。这将创建一个后台查询处理器,不需要每次都创建一个新线程。

关于ios - 清除NSRunLoop的处理流程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33756156/

10-09 02:16