runtime - 属性的动态挂载

来源:互联网 发布:金融建模需要会编程吗 编辑:程序博客网 时间:2024/06/05 13:24

学习使用运行时知识:

方法引入: 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能做什么?

0 0