RunTime

1、基本概念函數

一、runtime簡稱運行時,就是系統運行時的一些機制,其中最主要的是消息機制。指針

二、對於C語言,函數的調用在編譯的時候已經決定了,編譯完成後直接按順序執行。對象

三、對於OC函數的調用就是發送消息。屬於動態調用,編譯的時候並不能決定調用哪一個函數,只有在真正運行時纔會根據函數名來調用此函數。get

2、列子cmd

1.OC代碼調用一個方法io

 [self.xiaoming answer];

2.在編譯時RunTime會將上述代碼轉化成[發送消息]編譯

objc_msgSend(self.xiaoming,@selector(answer));class

3、常見做用變量

1. 動態的添加對象的成員變量和方法select

(1.1)動態添加方法

  class_addMethod([xiaoMing class], @selector(guess), (IMP)guessAnswer, "v@:");

  IMP)guessAnswer 意思是guessAnswer的地址指針;

  "v@:" 意思是,v表明無返回值void,若是是i則表明int;@表明 id sel; : 表明 SEL _cmd;

  「v@:@@」 意思是,兩個參數的沒有返回值。

2. 動態交換兩個方法的實現

  Method m1 = class_getInstanceMethod([xiaoMing class], @selector(firstSay));

    Method m2 = class_getInstanceMethod([xiaoMing class], @selector(secondSay));

    method_exchangeImplementations(m1, m2);

 

3. 實現分類也能夠添加屬性

4. 實現NSCoding的自動歸檔和解檔

5. 實現字典轉模型的自動轉換

相關文章
相關標籤/搜索