簡單的實用iOS執行時

2021-07-12 04:48:22 字數 1727 閱讀 2072

objective - c語言盡可能許多決定推遲時間執行時編譯時間和鏈結。只要有可能,它動態地事情。這意味著語言需要的不僅僅是乙個編譯器,但也乙個執行時系統來執行編譯後的**。執行時系統作為一種作業系統的objective - c語言;這就是使語言文字工作。本文著眼於nsobject類和objective - c程式如何與執行時系統互動。特別是,它檢查在執行時動態載入新類的範例,並將訊息**給其他物件。它還提供了關於如何找到資訊物件的資訊,而您的程式正在執行。 —來自蘋果官方文件

應用場景

1.遍歷屬性

unsigned int count = 0;

ivar *ivar = class_copyivarlist([self.person class], &count);

for (int i = 0; i2.動態建立方法- (void)sayfrom

else

self.textview.text = @"beijing";

}void guessanswer(id self,sel _cmd)

3.動態交換兩個方法
method m1 = class_getinstancemethod([self.person class], @selector(sayname));

method m2 = class_getinstancemethod([self.person class], @selector(say***));

method_exchangeimplementations(m1, m2);

4.在乙個類執行的時候,動態的替換掉該類的方法

method m1 = class_getinstancemethod([person class], @selector(sayname));

method m2 = class_getinstancemethod([tool class], @selector(changemethod));

method_exchangeimplementations(m1, m2);

5.實現歸檔和反歸檔

// 字典轉模型

+ (instancetype)objectwithdict:(nsdictionary *)dict

// 字典,user

// nslog(@"%@",key);

}// **轉換:nsarray中也是字典,把陣列中的字典轉換成模型.

// 判斷值是否是陣列

if ([value iskindofclass:[nsarray class]])

// 把模型陣列賦值給value

value = arrm;}}

// 2.5 kvc字典轉模型

if (value)

}// 返回物件

return objc;

}

歸檔- (void)encodewithcoder:(nscoder *)encoder

反歸檔- (id)initwithcoder:(nscoder *)decoder

{if (self = [super init]) {

unsigned int count = 0;

ivar *ivars = class_copyivarlist([movie class], &count);

for (int i = 0; i詳情請轉至

iOS中runtime 執行時 的簡單介紹與應用

最近學習到runtime這一塊知識了所以就總結一下,以備以後要用。但是由於runtime這一塊的知識比較多所以今天在這裡只是做乙個簡單的總結。一 什麼是runtime?objective c runtime是乙個實現objective c語言的c庫。它是一門編譯型語言 也是一門動態型的語言 這裡強調...

ios中執行時學習筆記

1.什麼是執行時?1 執行時是一套純c語言的api 純c語言庫 2 編譯器最終都會將oc 轉化 為執行時 clang rewrite objc m 3 利用執行時,可以做很多底層的操作,比如 動態新增物件的成員變數和成員方法 動態交換兩個方法的實現 特別是交換系統自帶的方法 獲得某個類的所有成員方法...

執行時異常

常見的幾種如下 nullpointerexception 空指標引用異常 classcastexception 型別強制轉換異常。illegalargumentexception 傳遞非法引數異常。arithmeticexception 算術運算異常 arraystoreexception 向陣列中...