挖掘超过一天...... Apple,Google,Slideshare和stackoverflow。但仍然不清楚NSRunLoop。
默认情况下,每个线程都有一个runloop。应用程序mainThread有mainRunLoop
1.如果MainRunLoop获取输入事件,是否正在创建新线程来执行它?然后另一个runLoop创建?那么多线程和多个runLoop如何工作?沟通?
2.如果runLoop没有输入事件/任务,它会休眠。当RunLoop结束时?
3.为什么我应该关心runLoop?
4.我可以在哪里使用它?
在哪里我想念我无法理解生命周期?
答案 0 :(得分:2)
让我们看看你的名单:
错误。线程没有内置的runloop。它们需要手动创建。
Runloop不会创建另一个线程,它会立即执行一个事件。这就是为什么在主线程中我们可以看到锁定的接口 - 主线程中的重载任务(iPhone中的UI在主线程上运行)。 Runloops可以在mac端口的帮助下相互通信。
Runloop在第一个事件发生前睡觉,然后醒来并结束。唯一的例外 - 计时器,但它不会runloop。 Runloop需要在Event之后每次开始运行(在循环中)。如果您调用run,则已经存在内置循环。
可以用来创建一些必须定期跟踪或执行某些内容的线程。例如,你可以为runloop创建一个线程,然后其他线程可以通过performSelector执行它的选择器。这将创建一个后台查询处理器,每次都不需要创建新线程。