你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 為您揭開runtime的神秘面紗

為您揭開runtime的神秘面紗

編輯:IOS開發基礎

本文為投稿文章,作者:黃軒

最近想換工作,本來信心滿滿的,可直到面試,才知道自己所掌握知識的薄弱的地方。於是針對面試薄弱,我開始了runtime的學習.以下將以我的學習過程來給大家講解runtime這個非常重要,但是又很寬泛的一個東西,希望給迷茫中的你一點幫助.也作為自己的學習筆記.

什麼是runtime?

runtime直譯就是運行時間,run(跑,運行) time(時間),網上大家都叫它運行時,它是一套比較底層的純C語言API,屬於一個C語言庫,包含了很多底層的C語言API,它是OC的幕後工作者,我們平時寫的OC代碼,在運行過程時,都會轉為runtime的C語言代碼

runtime有什麼用?

如果你之前不知道runtime,可能覺得它沒什麼用,其實他的作用非常強大.下面我們就以代碼的形式為大家揭開runtime的神秘面紗

作用1  獲取一個類全部成員變量名(如果你的成員私有,也可以獲取到)

我們新建一個Person類,.h代碼如下

24E6D740-14ED-4483-912D-AA675C87C23B.png

這些成員變量都是公有的,我們直接點開頭文件就可以看到,如果是系統的類呢,你是不是就不知道類裡面有哪些成員了,利用runtime可以輕松解決這個問題,現在我們來測試一下,記得要加 #import 

E29E193D-97EA-4D7D-8BA8-88BBB9F17F5F.png

打印結果

694E976C-DD22-4770-9FA4-98B89C4C680C.png

你可以試一下,把所有的成員放到.m文件裡面,它打印的結果是一樣的.

作用2  同理,我們可以獲取到一個類的全部屬性名

0A0504F7-FACB-4C2B-8D9C-C0A59D7FBDEE.png

打印結果:

29601516-8E4F-4C98-896D-863541F9CFBC.png

作用3 獲取一個類的全部方法

5635D473-40DC-45AA-9522-9732563E6556.png

打印結果:

C057CCB2-5931-4325-99A8-4FCA10339CA1.png

我們可以看到所有的方法

作用4 獲取一個類遵循的所有協議

先將遵循的協議給注釋掉

721FB3C1-C646-4D96-9EAC-F5B7205F25F3.png

測試代碼

0B6EA858-DF32-4ADF-9607-DC9A3A305482.png

結果啥都沒有打印出來

E0457045-9F61-40C2-9600-E5614BD0FA61.png

我們把遵循的代碼注釋給打開

再執行測試代碼,打印結果

E98B1187-E559-42B9-9E56-9A06B5B05020.png

是不是很棒,你可能覺得貌似用處不太大,那接下來我們來看看如何利用runtime歸檔和解檔.

作用5 歸檔/解檔D4DE7A8E-3ED3-4972-A165-7FDA0D8C2D9F.png測試如下:03EDB689-05E0-41F6-B9DF-46722D4DB274.png打印結果:

6E5DDF0C-7E32-417E-8FFF-7D11DAF7EDB4.png

是不是比你以前歸檔解檔簡單多了。

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

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved