1.到底什么才是RunLoop偏塞,簡述
RunLoop實際上就是個do-while運行循環(huán),其本質(zhì)保證程序運行不退出從而監(jiān)聽APP滑動施逾、點擊利术、timer等事件呈野。循環(huán)內(nèi)部沒有事情的時候是休眠狀態(tài)(sleep_and_wait())等待消息的到來,監(jiān)聽到消息之后去執(zhí)行消息(process_message(msg))印叁。
2.線程和RunLoop的關(guān)系
線程和Runloop是一對一的關(guān)系被冒,每個線程內(nèi)部肯定都有一個runloop,每一個runloop中可能維護著多個mode喉钢,CPU會在多個線程間切換來執(zhí)行任務(wù)姆打,呈現(xiàn)出多個線程同時執(zhí)行的效果。
執(zhí)行的任務(wù)其實就是RunLoop去各個Mode里執(zhí)行各個item肠虽;
主線程默認開啟NSDefaultRunLoopMode,子線程需要手動開啟runloop才行玛追。
3.RunLoop的應(yīng)用
crash 監(jiān)聽
線程彼翱危活
Timer添加mode
4.RunLoop內(nèi)部實現(xiàn)方式 及工作流程