在一篇简书中看到作者使用了objc_setAssociatedObject来为button添加响应block ,所以摘出来研究一下。
首先介绍一下objc_setAssociatedObject这个方法,
这个方法是Objective-C的运行时函数,用来把一个对象与另一个对象进行关联。
既然说了它是运行时函数,用到它的地方就要:
//#import <objc/runtime.h>头文件 这个不用解释了吧.
objc_setAssociatedObject一共需要四个参数,分别是源对象,关键字,关联的对象和一个关联策略
解释一下
源对象和关联对象就是需要进行关联的两个对象,而 关键字是一个void类型的指针。每一个关联的关键字必须是唯一的。通常都是会采用静态变量来作为关键字;关联策略呢,是个枚举,用来表示两个对象的关联程度,具体效果大家自己可以实验一下。
而objc_getAssociatedObject是和objc_setAssociatedObject配套使用的,它是获取相关联的对象时使用的,
objc_getAssociatedObject两个参数源对象于关键字,注意关键字唯一且一致。
就拿上面那个兄弟的button举个例子: 分别是.h与.m以及使用
这样大家就可以很好的理解和使用了,下面是提供代码兄弟的简书地址,大家有兴趣研究的,可以去看一下哦,谢谢大家的支持!