在既有类中使用关联对象存放自定义数据

2016-09-18  本文已影响0人  bamboomoon

为什么需要关联对象

有时需要在对象中存放相关信息。通常的做法:从这个对象的类中继承一个子类,来存放我们的信息。但是,有时候对象不是直接通过类来创建的,这种时候我们就没法来通过继承一个子类保存我们需要的信息。

所以,为了解决这个问题。就有了 『关联对象』


关联对象的策略

关联类型 等效的@property 属性
OBJC_ASSOCIATION_ASSIGN assign
OBJC_ASSOCIATION_RETAIN_NONATIONMIC nonationmic,retain
OBJC_ASSOCIATION_COPY_NONATIONMIC nonationmic,copy
OBJC_ASSOCIATION_RETAIN retain
OBJC_ASSOCIATION_COPY copy

管理关联对象的方法

理解关联对象

我们可以把某对象想象成 NSDictonary .关联到该对象的值理解为字典中的条目

存取对象的值就相当于字典对象上调用[object setObject:value forKey:key][object objectForKey:key]

两者之间有个重要的差别: 设置关联对象是用的键(key) 是个不透明的指针(其所指向的数据结构不局限于某种特定类型的指针)

在设置关联对象时,若想令两个键匹配到同一个值,则两者必须是相同的指针才行。所以在设置关联对象值是,通常使用静态全局变量做键(static void *EOCMyAlertViewKey = "EOCMyAlertViewKey";)

注意

上一篇下一篇

猜你喜欢

热点阅读