- (
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...