清除NSRunLoop的流程

时间:2015-11-17 11:48:32

标签: ios multithreading nsrunloop

挖掘超过一天...... Apple,Google,Slideshare和stackoverflow。但仍然不清楚NSRunLoop。

默认情况下,每个线程都有一个runloop。应用程序mainThread有mainRunLoop 1.如果MainRunLoop获取输入事件,是否正在创建新线程来执行它?然后另一个runLoop创建?那么多线程和多个runLoop如何工作?沟通?
2.如果runLoop没有输入事件/任务,它会休眠。当RunLoop结束时?
3.为什么我应该关心runLoop?
4.我可以在哪里使用它?

在哪里我想念我无法理解生命周期?

1 个答案:

答案 0 :(得分:2)

让我们看看你的名单:

  1. 错误。线程没有内置的runloop。它们需要手动创建。

  2. Runloop不会创建另一个线程,它会立即执行一个事件。这就是为什么在主线程中我们可以看到锁定的接口 - 主线程中的重载任务(iPhone中的UI在主线程上运行)。 Runloops可以在mac端口的帮助下相互通信。

  3. Runloop在第一个事件发生前睡觉,然后醒来并结束。唯一的例外 - 计时器,但它不会runloop。 Runloop需要在Event之后每次开始运行(在循环中)。如果您调用run,则已经存在内置循环。

  4. 可以用来创建一些必须定期跟踪或执行某些内容的线程。例如,你可以为runloop创建一个线程,然后其他线程可以通过performSelector执行它的选择器。这将创建一个后台查询处理器,每次都不需要创建新线程。