最近学习了下NSRunloop。 做一下简单的理解:oop
一、runloop与线程的关系,每个线程建立是都会有伴有一个runloop诞生,runloop用来接收事件源,让线程执行事件。当没有事件处理时,runloop处于退出状态,线程休眠。其中的事件源主要包括两大类,timer事件和inpute事件。inpute事件包括不少类型:performxxx,nsurlconnection,port,touch事件等。 (主线程建立的runloop不会停掉,会一直跑,有多是空跑,可是一直在跑。其余线程的runloop须要代码手动跑起来。学习
二、若是runloop没跑起来,将不能处理事件,线程休眠。 让runloop跑起来的方法 :url
1 - (void)run
不推荐用这种方法,跑起来就停不下了。spa
1 -(BOOL)runMode: date:
运行runloop一次。 runloop成功处理事件后返回yes。 当事件源为timer时,runloop不返回,一直运行处理timer事件,你能够手动中止;线程
三、再编辑中。。。。code