runtime - 屬性的動態掛載

學習使用運行時知識:

方法引入: tips:需要提前導入運行時框架#import <objc/runtime.h>

    static const char testKey;
     objc_setAssociatedObject(self, &testKey, @132, OBJC_ASSOCIATION_RETAIN);
     NSNumber *number = objc_getAssociatedObject(self, &testKey);

問題引入:方法功能?

文檔資料

objc_setAssociatedObject

描述

使用一個已定的key和關聯規則給一個給定的對象設定一個關聯值。 說白了就是給一個對象添加一個屬性,這個屬性名就是給的key,值爲value,並且對這個屬性添加策略:nonatomic, retain, assign,copy…【類似於setValue: forkey:】

參數解析:

object : 要添加屬性的對象
key : 是個指針型的,需要傳入地址
value : 與key相對應的value
policy : 要添加的策略


objc_getAssociatedObject

描述:

根據一個給定的對象的key值返回其對應的value 【類似於objectForKey:】

參數解析:

object: 屬性所關聯的對象
key : 關聯用的key

方法功能總結:

在運行時動態添加一個屬性

優點:按往常思路添加一個屬性便需要去添加屬性聲明,.m .h文件,或是繼承文件再填寫,相對麻煩,而此種操作爲屬性掛載上去,理加方便快速。


引伸: 什麼是運行時? 運行時能做什麼?

詳解Objective-C runtime

Objective-C Runtime能做什麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章