1

NSMutableDictionary根据 Apple 的文档,如果我通过该方法将对象添加到 an中setObject:forKey:,字典将保持对它的强引用。

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

4

2 回答 2

4

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

于 2014-09-11T16:50:18.897 回答
3

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

如果您正在寻找像地图这样的键/值存储,您想使用NSDictionary/NSMutableDictionary代替。您所说的setValue:forKey:方法是键值编码合规性,这是不同的。

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

于 2014-09-11T16:56:20.230 回答