Runtime 動態建立類新增屬性和方法

2021-07-11 13:03:23 字數 936 閱讀 3273

- (

void

)createclass  

//myclasstest是已經實現的函式,"v@:"這種寫法見引數型別連線

class_addmethod(myclass, @selector

(myclasstest:), (imp)myclasstest, 

"v@:"

);  

//註冊這個類到runtime系統中就可以使用他了

objc_registerclasspair(myclass);  

//生成了乙個例項化物件

idmyobj = [[myclass

alloc

]init

];  

nsstring

*str = 

@"asdb"

;  //給剛剛新增的變數賦值

//    object_setinstancevariable(myobj, "itest", (void *)&str);在arc下不允許使用

[myobjsetvalue

:str

forkey

:@"itest"

];  

//呼叫myclasstest方法,也就是給myobj這個接受者傳送myclasstest這個訊息

[myobjmyclasstest:1

0];  

}  //這個方法實際上沒有被呼叫,但是必須實現否則不會呼叫下面的方法

- (void

)myclasstest:(

int)a  

//呼叫的是這個方法

static

void

myclasstest(

idself

, sel

_cmd, 

inta) 

//self和_cmd是必須的,在之後可以隨意新增其他引數 

iOS分類中通過runtime新增動態屬性

1.先建立乙個類 property assign,nonatomic nsinteger age void run end import person.h implementation person void run end2.定義分類 import person.h inte ce person ...

iOS分類中通過runtime新增動態屬性

這個的話並不是說 可以 在程式執行的時候 來幾個 未知的東西 就新增什麼 1 2 3 4 5的屬性。而是可以在系統原有類的基礎上 給那個類 集合實際的工程來新增你方便實用的東西。比如 乙個 label 有 乙個 backgroundcolor屬性,我要給它新增乙個 其他的 比如 文字 第乙個字的co...

runtime 動態新增方法

動態新增方法 動態新增就運用到懶載入 開發場景 如果乙個類方法很多,載入類到記憶體的時候也比較耗費資源,需要給每個方法生成乙個對映表 這個詞我也不懂 可以使用動態給某個類新增方法。person p person alloc init perform selector 即為動態新增方法 p perfo...