objc_setAssociatedObject 与 objc_getAssociatedObject 探究

在一篇中看到作者使用了objc_setAssociatedObject来为button添加响应block ,所以摘出来研究一下。

首先介绍一下objc_setAssociatedObject这个方法,
这个方法是Objective-C的运行时函数,用来把一个对象与另一个对象进行关联。
既然说了它是运行时函数,用到它的地方就要:

//#import 头文件 这个不用解释了吧.

objc_setAssociatedObject一共需要四个参数,分别是源对象,关键字,关联的对象和一个关联策略
解释一下

源对象和关联对象就是需要进行关联的两个对象,而 关键字是一个void类型的指针。每一个关联的关键字必须是唯一的。通常都是会采用静态变量来作为关键字;关联策略呢,是个枚举,用来表示两个对象的关联程度,具体效果大家自己可以实验一下。

而objc_getAssociatedObject是和objc_setAssociatedObject配套使用的,它是获取相关联的对象时使用的,
objc_getAssociatedObject两个参数源对象于关键字,注意关键字唯一且一致。

就拿上面那个兄弟的button举个例子: 分别是.h与.m以及使用


objc_setAssociatedObject 与 objc_getAssociatedObject 探究_第1张图片
屏幕快照 2016-06-16 下午4.41.21.png
objc_setAssociatedObject 与 objc_getAssociatedObject 探究_第2张图片
屏幕快照 2016-06-16 下午4.41.11.png
objc_setAssociatedObject 与 objc_getAssociatedObject 探究_第3张图片
屏幕快照 2016-06-16 下午4.42.52.png

这样大家就可以很好的理解和使用了,下面是提供代码兄弟的地址,大家有兴趣研究的,可以去看一下哦,谢谢大家的支持!

http://www.jianshu.com/users/83b2eba88a0d/latest_articles

你可能感兴趣的:(objc_setAssociatedObject 与 objc_getAssociatedObject 探究)