Objective-C:如何判断类方法是否分配/ inits

时间:2013-08-21 23:01:23

标签: ios objective-c macos cocoa

如何判断类方法是否分配并插入对象?例如......

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

甚至更好

NSMutableArray ary = [NSMutableArray arrayWithCapacity:50];

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