本文為投稿文章,作者:黃軒
最近想換工作,本來信心滿滿的,可直到面試,才知道自己所掌握知識的薄弱的地方。於是針對面試薄弱,我開始了runtime的學習.以下將以我的學習過程來給大家講解runtime這個非常重要,但是又很寬泛的一個東西,希望給迷茫中的你一點幫助.也作為自己的學習筆記.
什麼是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 歸檔/解檔測試如下:打印結果:
是不是比你以前歸檔解檔簡單多了。
runtime作用太大了,學習了才知道,這是我今天學習的過程和一點經驗,後續我還會繼續把學習的過程分享給大家,希望能給你一些幫助.
代碼下載:
RuntimeDemo.zip
參考:
http://www.henishuo.com/category/runtime/
http://www.jianshu.com/p/927c8384855a
http://www.jianshu.com/p/22bfb87e63d3
http://www.jianshu.com/p/364eab29f4f5