2014-09-25 78 views
1

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

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

NSMutableArray *arr = [NSMutableArray alloc] init]; 

,第二个是

NSMutableArray *arr = [NSMutableArray array]; 

那么,什么是这两种方法之间的区别?哪个更适合使用?

+1

你可以转到这个[链接](http://stackoverflow.com/questions/10474934/how-to-initialize-a-nsmutablearray-in-objective-c)将清除你的理解。 – nikhil84 2014-09-25 12:02:43

+0

[[NSMutableArray数组\]与\ [[NSMutableArray alloc \] init \]之间的差异的可能重复](http://stackoverflow.com/questions/5423211/difference-between-nsmutablearray-array-vs-nsmutablearray -alloc-init) – Larme 2014-09-25 12:34:58

+0

使用ARC在绝大多数情况下基本上没有区别。我猜想第一个效率稍高一点。 – 2014-09-25 12:37:12

回答

4

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

在ARC代码中,你使用哪一个并不重要。

参见ARRAY CLASSSO QUESTION

0

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

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

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

页头去与初始化

new = alloc + init 

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

  • 新的不支持自定义初始化
  • 的alloc-init程序更加明确不是新

普遍的看法似乎是,你应该使用任何你舒服。