RunLoop運行循環 和 RunTime運行時消息機制的介紹和使用

一.Runloop —運行循環數組

1)用來幹嗎的?網絡

是一個死循環,保證程序不退出。程序默認一個線程執行一個任務,執行完任務後該線程就over掉了,但主線程不行,主線程一over掉程序就沒有了。主線程沒有事情作的時候會進入休眠狀態等待用戶的交互,用戶只要有了點擊事件,睡眠狀態下的runloop就會被喚醒。查找點擊的位置,由誰來響應點擊事件,把消息發送給對方的對象。socket

2) 在程序開發中何時會用到runloop?oop

>定時器(NSTimer 和 CADisplayLink)線程

>蘋果公開提供的Mode有兩個:KCRunLoopDefaultMode(默認等待用戶交互的) 和 KCTrackingLoopDefaultMode(專門處理滾動視圖的拖動事件)對象

目的:保證程序不退出,監聽全部事件!(觸摸/時鐘/網絡)遊戲

開發使用:事件

 >實例化時鐘,添加到運行循環。開發

注意:必定要銷燬時鐘,不然會產生循環引用!get

>socket 開發,使用runloop 可以監聽網絡端口數據的接收與發送狀況!

 socket 開發,一般用在智能家居開發/遊戲機。

- 有不少文章介紹 運行循環的實戰, 都會舉例 AFN 2.0的時候 NSURLConnectionURL

-必需要了解到「自動釋放池」的釋放與建立是與runloop有關的!

二.RunTime—運行時   「消息機制」

>程序啓動時,首先加載運行時!是OC的底層。

運行時的應用場景:

1)關聯對象。仿SDWebImage時,給分類動態添加屬性。作到更好的解耦。簡化使用。

2)*動態獲取類的屬性。字典轉模型使用!創建NSObject的分類。

>2.1class_copyPropertyList 獲取類屬性數組

>遍歷數組

>2.2property_getName  得到每個屬性的名稱

>添加到OC的數組

>free  釋放運行時數組

相關文章
相關標籤/搜索