[程序員日記]初探Runtime 運行時

1.初識runtime###

Runtime 運行時 用于對于APP流暢度數(shù)據(jù)加載效率要求較高的App,是一個運行時庫(Runtime Library),使用的是C語言匯編語言進(jìn)行編寫。通過Runtime機(jī)制,為C語言添加了面向?qū)ο?/strong>的特性,得到我們使用的Objective-C語言

2.runtime簡單用法###

(1)函數(shù)調(diào)用:消息機(jī)制####

消息機(jī)制 —>
接受體:對象
消息:函數(shù)

  [objc   method];

翻譯成 —>

   objc_msgSend( objc, @selector( method ) );

objc代表的是本類self

objc_msgSend( objc, methodlist)    //methodlist指向本類super          objc_msgSend( super_objc, methodlist )  //Methodlist指向父類,super_objc本質(zhì)也指向objc

例如:
OC寫法:

[self createUI];

runtime寫法:

objc_msgSend(self, @selector(createUI));

再如:
OC寫法:

[self startRequestWithURL:@"http://www.baidu.com"];

runtime 寫法

objc_msgSend(self, @selector(startRequestWithURL:),@"http://www.baidu.com");

注意:使用runtime需要導(dǎo)入頭文件

#import <objc/runtime.h>
#import <objc/message.h>

2.動態(tài)的關(guān)聯(lián)屬性####

runtime可以進(jìn)行,與動態(tài)擴(kuò)展有關(guān)的還有類別
但是類別只能功能擴(kuò)展,無法擴(kuò)展屬性

可以對屬性擴(kuò)展的有:
1、靜態(tài)屬性
2、使用運行時擴(kuò)展屬性(關(guān)聯(lián))

實現(xiàn)屬性的關(guān)聯(lián)(在類別中擴(kuò)展):
1、在類別里創(chuàng)建一個靜態(tài)的指針(key)

  static  void  *  v_key;

2、實現(xiàn)相應(yīng)的getter、setter方法

@property  id myValue; 

—>

- (void)setMyValue:(id)objc{objc_setAssociatedObject(self, v_key, myValue, OBJC_ASSOCIATION_RETAIN);}

-(id)myValue{objc_getAssociatedObject(self, v_key);

}

例如:
定義一個類別NSString+MyCategary 在其中對NSString 進(jìn)行屬性擴(kuò)展,定義一個屬性name,類型為NSString,當(dāng)操作時會產(chǎn)生錯誤

[__NSCFConstantString setName:]: unrecognized selector sent to instance 0x10a6670d0

因此需要對name的getter和setter方法進(jìn)行擴(kuò)展,擴(kuò)展方法為

static void * key = @"key";

- (void)setName:(NSString *)name{
//    self.name = name;//OC寫法
    /*
參數(shù)說明:
    1.調(diào)用的對象self
    2.靜態(tài)的C語言指針,保證set/get方法操作的是同一個對象
    3.賦予的值
    4.賦值的變量屬性修飾符
    */
    objc_setAssociatedObject(self, key, name, OBJC_ASSOCIATION_COPY_NONATOMIC);
}

- (NSString*)name{
//    return self.name;//OC寫法

    return objc_getAssociatedObject(self, key);
}

當(dāng)然這些知識初識runtime用法,更多信息后續(xù)補充。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 性能好 感覺性能很高不知道是不是添加的東西太少 水平可以拖拽 , 可是如果每個列表都很長 , 就不好拖了 Shif...
    南不圖閱讀 702評論 0 1
  • 沒記性太太 沒記性太太有點分心,準(zhǔn)確地說,她對任何事情都不專心。 有一天,她遇見了可笑先生。 ——你好,沒記性太太...
    雪山小狐閱讀 382評論 0 0
  • 文/默讀者 2015-5-5 一早讀到淼漭君的這首詩,很驚喜——凝煉的主題,集中而又開闊的意象,簡潔干凈的語言,...
    雁心老師閱讀 362評論 0 1
  • 42 小猴兒的娘死了。 高高的山坡上,四合院又一次高冷的呈現(xiàn)在眾多人...
    心靈是我獨舞的城池閱讀 331評論 0 0