管理关联对象和NSDictionary区别

Posted Beche

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管理关联对象和NSDictionary区别相关的知识,希望对你有一定的参考价值。

一、问题引出

为类添加关联对象:

void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)

为NSDictionary添加对象:

- (void)setObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey;

 

objc_setAssociatedObject可以理解为给object对象(NSDictionary),采用policy策略添加key-value记录。

 

二、区别

1、方法入参数中的key,分别是不透明指针和对象。对象只用调用isEqual:方法返回YES,NSDictionary视为同一记录。而不透明指针必须是完全相同的指针,才能找到同一个关联的对象。

2、基于第一点,objc_setAssociatedObject的入参key,必须是静态全局变量,如static void *associatedKey = "associatedkey";

以上是关于管理关联对象和NSDictionary区别的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary  NSSet和NSArray的区别

片段 XXX 未与片段管理器关联

片段未与片段管理器关联。 (对话片段)

Android (安卓) getContext 和 getActivity的区别

jquery 对象的 heightinnerHeightouterHeight 的区别以及DOM 元素的 clientHeightoffsetHeightscrollHeightoffset(代码片段

保存自定义对象的 NSArrays 的 NSDictionary