NSMutableDictionary
根据 Apple 的文档,如果我通过该方法将对象添加到 an中setObject:forKey:
,字典将保持对它的强引用。
但是setValue:forKey:
方法呢?文档没有说明通过此方法添加的对象的引用类型。它和另一个一样吗?字典是否也保持对通过此方法添加的对象的强引用?
NSMutableDictionary
根据 Apple 的文档,如果我通过该方法将对象添加到 an中setObject:forKey:
,字典将保持对它的强引用。
但是setValue:forKey:
方法呢?文档没有说明通过此方法添加的对象的引用类型。它和另一个一样吗?字典是否也保持对通过此方法添加的对象的强引用?
NSMutableDictionary
(and NSMutableArray
) 保持对添加到其中的任何对象的强引用,无论它是如何添加的。
NSMutableArray
并NSArray
保持对它们包含的对象的强引用。这些对象可以使用文字构造函数@[myObject, myObject2, ...]
、 的初始化程序NSArray
或 的添加/插入方法添加NSMutableArray
。
如果您正在寻找像地图这样的键/值存储,您想使用NSDictionary
/NSMutableDictionary
代替。您所说的setValue:forKey:
方法是键值编码合规性,这是不同的。
此外,NSDictionary
保持NSMutableDictionary
对值对象的强引用,并保持对键的复制引用(必须符合NSCopying
协议)。