NSMutableDictionary是否通过'setValue:forKey:'保存对我放入的对象的强引用?

时间:2014-09-11 16:47:06

标签: objective-c nsdictionary strong-references

根据Apple的文档,如果我通过NSMutableDictionary方法向setObject:forKey:添加对象,则字典会对其进行强有力的引用。

但是setValue:forKey:方法呢?该文档没有说明通过此方法添加的对象的引用类型。 它和另一个一样吗?字典是否也保留了对通过此方法添加的对象的强引用?

2 个答案:

答案 0 :(得分:4)

NSMutableDictionary(和NSMutableArray)保留对添加到其中的任何对象的强引用,无论它是如何添加的。

答案 1 :(得分:3)

NSMutableArrayNSArray对其包含的对象保持强引用。这些对象可以使用文字构造函数@[myObject, myObject2, ...]NSArray的初始化程序或NSMutableArray的添加/插入方法添加。

如果您正在寻找像地图一样的键/值存储空间,则需要使用NSDictionary / NSMutableDictionary。您正在谈论的setValue:forKey:方法是针对键值编码的合规性,这是不同的。

此外,NSDictionaryNSMutableDictionary保留对值对象的强引用,并保持对键的复制引用(必须符合NSCopying协议)。