2014-09-25 114 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程序更加明確不是新

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