如何判断类方法是否分配并插入对象?例如......
NSArray *theArray = [NSArray array];
NSArray *anotherArray = [[NSarray alloc] init];
使用这两个有什么区别?他们俩都不创建一个空数组吗?
NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSCalendar *anotherCalendar = [[NSCalendar alloc] init];
如何知道在创建对象时使用哪个?
答案 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之前是有用的。