0

如何判断一个类方法是否分配和初始化一个对象?例如...

NSArray *theArray = [NSArray array];
NSArray *anotherArray = [[NSarray alloc] init];

使用这两者有什么区别?他们不是都创建一个空数组吗?

NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSCalendar *anotherCalendar = [[NSCalendar alloc] init];

创建对象时如何知道使用哪个?

4

1 回答 1

0

如果启用 ARC,则没有区别。

[NSArray array] 是一种方便的方法。它分配一个数组对象,对其进行初始化并标记该对象以进行自动释放(后者是禁用自动引用计数时)。许多对象提供这些类型的方法来创建实例。查阅 API 文档以了解您感兴趣的类是否提供了 alloc-init-(autorelease) 快捷方式,或者它是否具有更适合您需求的创建或初始化方法。使用它们 - 它们更短,代码更易于阅读,无需担心 ARC 是打开还是关闭。为您自己的类编写类似的方法。

如果需要在 init 函数中传递参数,请使用特定的 alloc-init。例如

NSMutableArray ary = [[NSMutableArray alloc] initWithCapacity:50];

甚至更好

NSMutableArray ary = [NSMutableArray arrayWithCapacity:50];

同样,当人们想要控制实例引用计数时,alloc-init 对在 ARC 之前很有用。

于 2013-08-21T23:09:54.387 回答