Associated Objects 主要有如下三个使用场景:函数
一、为现有的类添加私有变量以帮助实现细节spa
二、为现有的类添加公有属性;code
三、为 KVO 建立一个关联的观察者。对象
关联函数一共有3个:ci
void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);
id objc_getAssociatedObject(id object, const void *key);
void objc_removeAssociatedObjects(id object);
OBJC_ASSOCIATION_ASSIGN = 0, //弱引用关联对象rem
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, //强引用关联对象,且为非原子操做get
OBJC_ASSOCIATION_COPY_NONATOMIC = 3, //复制关联对象,且为非原子操做io
OBJC_ASSOCIATION_RETAIN = 01401, //强引用关联对象,且为原子操做class
OBJC_ASSOCIATION_COPY = 01403 //复制关联对象,且为原子操做变量