Runtime (ios開發篇)
阿新 • • 發佈:2018-12-14
1,runtime基本知識點:
- RunTime簡稱執行時,就是系統在執行的時候的一些機制,其中最主要的是訊息機制。
- 對於C語言,函式的呼叫在編譯的時候會決定呼叫哪個函式,編譯完成之後直接順序執行,無任何二義性。
- OC的函式呼叫成為訊息傳送,屬於動態呼叫過程。在編譯的時候並不能決定真正呼叫哪個函式(事實證明,在編譯階段,OC可以呼叫任何函式,即使這個函式並未實現,只要申明過就不會報錯。而C語言在編譯階段就會報錯)。
- 只有在真正執行的時候才會根據函式的名稱找到對應的函式來呼叫。
2,runtime的實現:
- 我們寫的oc程式碼,它在執行的時候也是轉換成了runtime方式執行的,更好的理解runtime,也能幫我們更深的掌握oc語言。每一個oc的方法,底層必然有一個與之對應的runtime方法。
- 當我們用OC寫下這樣一段程式碼:
-
[tableView cellForRowAtIndexPath:indexPath];
-
在編譯時RunTime會將上述程式碼轉化成[傳送訊息]
objc_msgSend(tableView, @selector(cellForRowAtIndexPath:),indexPath);
3,runtime 常見方法:
4,runtime常見作用:
- 動態的新增物件的成員變數和方法
- 動態交換兩個方法的實現
- 攔截並替換方法
- 在方法上增加額外功能
- 實現NSCoding的自動歸檔和解檔
- 實現字典轉模型的自動轉換
5,runtime 程式碼實現:
要使用runtime,要先引入標頭檔案#import <objc/runtime.h>