管理關聯對象和NSDictionary區別

1、問題引出spa

爲類添加關聯對象:指針

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

爲NSDictionary添加對象:code

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

 

objc_setAssociatedObject能夠理解爲給object對象(NSDictionary),採用policy策略添加key-value記錄。對象

 

2、區別blog

一、方法入參數中的key,分別是不透明指針和對象。對象只用調用isEqual:方法返回YES,NSDictionary視爲同一記錄。而不透明指針必須是徹底相同的指針,才能找到同一個關聯的對象。ci

二、基於第一點,objc_setAssociatedObject的入參key,必須是靜態全局變量,如static void *associatedKey = "associatedkey";io

相關文章
相關標籤/搜索