记录 区别 完全 style 管理 code 全局变量 oid
一、问题引出
为类添加关联对象:
- voidobjc_setAssociatedObject(id object,const void*key,idvalue, objc_AssociationPolicy policy)
为 NSDictionary 添加对象:
- - (void)setObject:(ObjectType)anObject forKey:(KeyType )aKey;
objc_setAssociatedObject 可以理解为给 object 对象 (NSDictionary),采用 policy 策略添加 key-value 记录。
二、区别
1、方法入参数中的 key,分别是不透明指针和对象。对象只用调用 isEqual: 方法返回 YES,NSDictionary 视为同一记录。而不透明指针必须是完全相同的指针,才能找到同一个关联的对象。
2、基于第一点,objc_setAssociatedObject 的入参 key,必须是静态全局变量,如 static void *associatedKey = "associatedkey";
管理关联对象和 NSDictionary 区别
来源: http://www.bubuko.com/infodetail-2140808.html