在看到Node.js定義的時候看到的Runtime,不明白是啥,記錄一下。
Runtime又叫運行時,是一套底層C語言的API,其爲iOS內部的核心之一,我們平時編寫的OC代碼底層都是基於它來實現的。
Objective-C 是一門動態語言,它會將一些工作放在代碼運行時才處理而並非編譯時。也就是說,有很多類和成員變量在我們編譯的時是不知道的,而在運行時,我們所編寫的代碼會轉換成完整的確定的代碼運行。因此,編譯器是不夠的,我們還需要一個運行時系統(Runtime system)來處理編譯後的代碼。Runtime 基本是用 C 和彙編寫的。
Runtime是什麼?
- 運行時(Runtime)是指將數據類型的確定由編譯時推遲到了運行時
- Runtime是一套比較底層的純C語言API, 屬於1個C語言庫, 包含了很多底層的C語言API
- 平時編寫的OC代碼,在程序運行過程中,其實最終會轉換成Runtime的C語言代碼,Runtime是Object-C的幕後工作者
- Object-C需要Runtime來創建類和對象,進行消息發送和轉發
特性: 編寫的代碼具有運行時、動態特性
Runtime用來幹什麼?用在哪些地方?
用來幹什麼 基本作用
- 在程序運行過程中,動態的創建類,動態添加、修改這個類的屬性和方法;
- 遍歷一個類中所有的成員變量、屬性、以及所有方法
- 消息傳遞、轉發
用在哪些地方 Runtime的典型事例
- 給系統分類添加屬性、方法
- 方法交換
- 獲取對象的屬性、私有屬性
- 字典轉換模型
- KVC、KVO
- 歸檔(編碼、解碼)
- NSClassFromString class<->字符串
- block
- 類的自我檢測
- ...
參考:
https://www.jianshu.com/p/291754a90d2b
https://blog.csdn.net/zhidaeryuan/article/details/78598929