學習使用運行時知識:
方法引入: tips:需要提前導入運行時框架#import <objc/runtime.h>
static const char testKey;
objc_setAssociatedObject(self, &testKey, @132, OBJC_ASSOCIATION_RETAIN);
NSNumber *number = objc_getAssociatedObject(self, &testKey);
問題引入:方法功能?
文檔資料
描述
使用一個已定的key和關聯規則給一個給定的對象設定一個關聯值。 說白了就是給一個對象添加一個屬性,這個屬性名就是給的key,值爲value,並且對這個屬性添加策略:nonatomic, retain, assign,copy…【類似於setValue: forkey:】
參數解析:
object : 要添加屬性的對象
key : 是個指針型的,需要傳入地址
value : 與key相對應的value
policy : 要添加的策略
描述:
根據一個給定的對象的key值返回其對應的value 【類似於objectForKey:】
參數解析:
object: 屬性所關聯的對象
key : 關聯用的key
方法功能總結:
在運行時動態添加一個屬性
優點:按往常思路添加一個屬性便需要去添加屬性聲明,.m .h文件,或是繼承文件再填寫,相對麻煩,而此種操作爲屬性掛載上去,理加方便快速。
引伸: 什麼是運行時? 運行時能做什麼?