NSRunLoop是消息機制的處理模式
NSRunLoop的作用在于有事情做的時候使的當前NSRunLoop的線程工作,沒有事情做讓當前NSRunLoop的線程休眠
NSTimer默認添加到當前NSRunLoop中,也可以手動制定添加到自己新建的NSRunLoop
NSRunLoop就是一直在循環檢測,從線程start到線程end,檢測inputsource(如點擊,雙擊等操作)同步事件,檢測timesource同步事件,檢測到輸入源會執行處理函數,首先會產生通知,corefunction向線程添加runloop observers來監聽事件,意在監聽事件發生時來做處理。
在單線程的app中,不需要注意Run Loop,但不代表沒有。程序啟動時,系統已經在主線程中加入了Run Loop。它保證了我們的主線程在運行起來后,就處于一種“等待”的狀態(而不像一些命令行程序一樣運行一次就結束了),這個時候如果有接收到的事件(Timer的定時到了或是其他線程的消息),就會執行任務,否則就處于休眠狀態。
runloopmode是一個集合,包括監聽:事件源,定時器,以及需通知的runloop observers