RunLoop和線程的關(guān)系:
- RunLoop 的作用就是來管理線程的膀钠,當(dāng)線程的 RunLoop開啟后掏湾,線程就會在執(zhí)行完任務(wù)后裹虫,處于休眠狀態(tài),隨時等待接受新的任務(wù)融击,而不是退出筑公。
2.只有主線程的RunLoop是默認開啟的,所以程序在開啟后尊浪,會一直運行匣屡,不會退出。其他線程的RunLoop如果需要開啟拇涤,需要手動開啟
RunLoop與線程是一一對應(yīng)的捣作,一個runloop對應(yīng)一個核心的線程,為什么說是核心的工育,是因為runloop是可以嵌套的虾宇,但是核心的只能有一個,他們的關(guān)系保存在一個全局的字典里
RunLoop在第一次獲取時被創(chuàng)建如绸,在線程結(jié)束時被銷毀。對于主線程來說旭贬,RunLoop在程序一啟動就默認創(chuàng)建好了怔接。
5.對于子線程來說,RunLoop是懶加載的稀轨,只有當(dāng)我們使用的時候才會創(chuàng)建扼脐,所以在子線程用定時器要注意:確保子線程的RunLoop被創(chuàng)建和開啟,不然定時器不會回調(diào)
RunLoop的mode作用是什么?:
1.model 主要是用來指定事件在運行循環(huán)中的優(yōu)先級的奋刽,分為:
- NSDefaultRunLoopMode(kCFRunLoopDefaultMode):默認瓦侮,空閑狀態(tài)
- UITrackingRunLoopMode :ScrollView滑動時
- UIInitializationRunLoopMode :啟動時
- NSRunLoopCommonModes(kCFRunLoopCommonModes):Mode集合
2.蘋果公開提供的 Mode有兩個:
- NSDefaultRunLoopMode(kCFRunLoopDefaultMode)
- NSRunLoopCommonModes(kCFRunLoopCommonModes)