什麼是runtime?
runtime直譯就是運行時間,run(跑,運行) time(時間),網上大家都叫它運行時,它是一套比較底層的純C語言API,屬於一個C語言庫,包含了很多底層的C語言API,它是OC的幕後工作者,我們平時寫的OC代碼,在運行過程時,都會轉為runtime的C語言代碼
runtime有什麼用?
如果你之前不知道runtime,可能覺得它沒什麼用,其實他的作用非常強大.下面我們就以代碼的形式為大家揭開runtime的神秘面紗
作用1 獲取一個類全部成員變量名(如果你的成員私有,也可以獲取到)
我們新建一個Person類,.h代碼如下
這些成員變量都是公有的,我們直接點開頭文件就可以看到,如果是系統的類呢,你是不是就不知道類裡面有哪些成員了,利用runtime可以輕松解決這個問題,現在我們來測試一下,記得要加#import
打印結果
你可以試一下,把所有的成員放到.m文件裡面,它打印的結果是一樣的.
作用2 同理,我們可以獲取到一個類的全部屬性名
打印結果:
作用3獲取一個類的全部方法
打印結果:
我們可以看到所有的方法
作用4獲取一個類遵循的所有協議
先將遵循的協議給注釋掉
測試代碼
結果啥都沒有打印出來
我們把遵循的代碼注釋給打開
再執行測試代碼,打印結果
是不是很棒,你可能覺得貌似用處不太大,那接下來我們來看看如何利用runtime歸檔和解檔.
作用5 歸檔/解檔測試如下: