1. 程式人生 > >Runtime (ios開發篇)

Runtime (ios開發篇)

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>