NSMutableArray的初始化

时间:2014-09-25 12:00:57

标签: ios objective-c iphone nsmutablearray

当我们想在NSMutableArray中分配一些值时,首先我们必须初始化它。

我们可以用两种方式初始化它。一个是

NSMutableArray *arr = [NSMutableArray alloc] init];

,第二个是

NSMutableArray *arr = [NSMutableArray array];

那么这两种方法有什么区别?哪个是更好的选择?

2 个答案:

答案 0 :(得分:4)

如果您使用的是非ARC项目,则在第一个项目中,您拥有数组对象&你必须释放它们。它返回一个只保留的对象。第二个返回一个保留和自动释放的对象,因为你没有数组对象的所有权。

在ARC代码中,使用哪些内容并不重要。

参考ARRAY CLASS和此SO QUESTION

答案 1 :(得分:0)

Alloc :NSObject的类方法。返回接收类的新实例。

Init :NSObject的实例方法。由子类实现,在分配了内存之后立即初始化一个新对象(接收者)。

:NSObject的类方法。分配接收类的新实例,向其发送init消息,并返回初始化对象。

alloc与init

一起使用
new = alloc + init

使用+ new的唯一好处是它更简洁。如果需要为类的初始化器提供参数,则必须使用+ alloc和-initWith ...方法。

  • new不支持自定义初始化程序
  • alloc-init比新
  • 更明确

一般意见似乎是你应该使用你感到满意的任何东西。