想用比较通俗点方式解释下Runloop大致是什么东西,什么原理。
一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,runloop就是为了实现这种机制而存在。
RunLoop 实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数(内部主要是一个do-while 循环),来实现接收消息-等待-处理的循环,直到这个循环结束(接到quit消息)。
RunLoop 的核心就是一个 mach_msg() ,RunLoop 调用这个函数去接收消息,然后进行应用内部的分发。
如果想对Runloop进行深入研究和理解,看下面这篇文章:
http://blog.ibireme.com/2015/05/18/runloop/