例如,假设我想开始使用NSMutableDictionary
. 然后,我似乎至少有三个选项可以创建具有未指定容量的空的、可变的字典:
NSMutableDictionary *mutDict = [[NSMutableDictionary alloc] init]; // 1
NSMutableDictionary *mutDict = [NSMutableDictionary new]; // 2
NSMutableDictionary *mutDict = [NSMutableDictionary dictionary]; // 3
现在,据我了解,[NSObject new]
实际上(如果不完全是?)与[[NSObject alloc] init]
. 因此,就我而言,我们基本上可以合并这两个选项。不过,关于该[NSDictionary dictionary]
方法,文档说:
字典
创建并返回一个空字典。
+ (id)dictionary
返回值
一个新的空字典。
讨论
声明此方法主要用于
NSDictionary
.如果您不想要临时对象,还可以使用
alloc...
and创建一个空字典init
。
首先,我有几个关于此文档的问题:
首先,为什么它甚至在 NSDictionary 而不是 NSMutableDictionary 中声明,如果那是它打算使用的地方?
其次,在这种情况下,他们所说的“临时对象”是什么意思?
总结:与前两种相比,上面的第三种选择有区别吗?它可能与自动释放对象有关吗?这在自动引用计数 (ARC) 上下文中是否重要?
请注意,此问题也适用于其他类,例如[NSData data]
和[NSArray array]
。
我正在使用 XCode 4.6.1 和 iOS 6.1。这些天我使用哪一个,使用 ARC 有关系吗?也许从性能的某些角度来看?
感谢您对此提供任何明确的信息!