【Objective-C Runtime動態(tài)加載】---動態(tài)創(chuàng)建類Class

動態(tài)創(chuàng)建類Class,動態(tài)添加Class成員變量與成員函數(shù),動態(tài)變量賦值與取值畔勤,動態(tài)函數(shù)調用等方法

a.使用objc_allocateClassPair創(chuàng)建一個類Class

const char * className = "Calculator";
  Class kclass = objc_getClass(className);
  if (!kclass) 
  {
     Class superClass = [NSObject class]; 
     kclass = objc_allocateClassPair(superClass, className, 0);
  }

b.使用class_addIvar添加一個成員變量

NSUInteger size;
  NSUInteger alignment;
  NSGetSizeAndAlignment("*", &size, &alignment);
  class_addIvar(kclass, "expression", size, alignment, "*");

c.使用class_addMethod添加成員方法

  class_addMethod(kclass, @selector(setExpressionFormula:), (IMP)setExpressionFormula, "v@:@");
   class_addMethod(kclass, @selector(getExpressionFormula), (IMP)getExpressionFormula, "@@:");

   static void setExpressionFormula(id self, SEL cmd, id value)
   {
      NSLog(@"call setExpressionFormula");
   }

   static void getExpressionFormula(id self, SEL cmd)
   {
       NSLog(@"call getExpressionFormula");
   } 
注:
1.type定義參考:
2."v@:@",解釋v-返回值void類型,@-self指針id類型,:-SEL指針SEL類型,@-函數(shù)第一個參數(shù)為id類型
3."@@:",解釋@-返回值id類型,@-self指針id類型,:-SEL指針SEL類型,

d.注冊到運行時環(huán)境
objc_registerClassPair(kclass);
e.實例化類
id instance = [[kclass alloc] init];
f.給變量賦值
object_setInstanceVariable(instance, "expression", "1+1");
g.獲取變量值
void * value = NULL;
object_getInstanceVariable(instance, "expression", &value);
h.調用函數(shù)
[instance performSelector:@selector(getExpressionFormula)];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吵冒,隨后出現(xiàn)的幾起案子诈嘿,更是在濱河造成了極大的恐慌算谈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曹货,死亡現(xiàn)場離奇詭異咆繁,居然都是意外死亡,警方通過查閱死者的電腦和手機顶籽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門玩般,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人礼饱,你說我怎么就攤上這事坏为。” “怎么了镊绪?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵匀伏,是天一觀的道長。 經常有香客問我蝴韭,道長够颠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任榄鉴,我火速辦了婚禮履磨,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好欺嗤,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著综苔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪位岔。 梳的紋絲不亂的頭發(fā)上如筛,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音抒抬,去河邊找鬼杨刨。 笑死,一個胖子當著我的面吹牛擦剑,可吹牛的內容都是我干的妖胀。 我是一名探鬼主播芥颈,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赚抡!你這毒婦竟也來了爬坑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤涂臣,失蹤者是張志新(化名)和其女友劉穎盾计,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赁遗,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡署辉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了岩四。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哭尝。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剖煌,靈堂內的尸體忽然破棺而出刚夺,到底是詐尸還是另有隱情,我是刑警寧澤末捣,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站创橄,受9級特大地震影響箩做,放射性物質發(fā)生泄漏。R本人自食惡果不足惜妥畏,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一邦邦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醉蚁,春花似錦燃辖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至滥玷,卻和暖如春氏身,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惑畴。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工蛋欣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人如贷。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓陷虎,卻偏偏與公主長得像到踏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尚猿,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容