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能做什么?

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