根据Apple的文档,如果我通过NSMutableDictionary
方法向setObject:forKey:
添加对象,则字典会对其进行强有力的引用。
但是setValue:forKey:
方法呢?该文档没有说明通过此方法添加的对象的引用类型。
它和另一个一样吗?字典是否也保留了对通过此方法添加的对象的强引用?
答案 0 :(得分:4)
NSMutableDictionary
(和NSMutableArray
)保留对添加到其中的任何对象的强引用,无论它是如何添加的。
答案 1 :(得分:3)
NSMutableArray
和NSArray
对其包含的对象保持强引用。这些对象可以使用文字构造函数@[myObject, myObject2, ...]
,NSArray
的初始化程序或NSMutableArray
的添加/插入方法添加。
如果您正在寻找像地图一样的键/值存储空间,则需要使用NSDictionary
/ NSMutableDictionary
。您正在谈论的setValue:forKey:
方法是针对键值编码的合规性,这是不同的。
此外,NSDictionary
和NSMutableDictionary
保留对值对象的强引用,并保持对键的复制引用(必须符合NSCopying
协议)。