5

配列(またはそれぞれのファクトリメソッドを使用する他のコレクション)を作成することの長所と短所は何ですか

[[NSArray alloc] init]

[NSArray array]

目的Cで?後者のファクトリ メソッドを使用すると、メモリ管理について心配する必要がないように思われるので、alloc + init を使用する意味があるかどうかに興味がありましたが、今ではこれら 2 つの違いすべてと、なぜ 1 つがどちらかを選択します。

4

2 に答える 2

5

ARC の前には、決定的な違いがありました。alloc/initケースは保持されたオブジェクトを返しましたが、ケースarray自動解放されたオブジェクトを返しました。

ARC では、違いはそれほど重要ではありません。おそらく最初のケースはより効率的な髪ですが、ほとんどのシナリオでは交換可能です.

于 2012-11-01T03:20:38.200 に答える
1

最初のものでは、配列オブジェクトの所有権があり、それらを解放する必要があります。

NSMutableArray* p = [[NSMutableArray alloc] init];

[p リリース];

&配列オブジェクトの所有権がないため、解放する必要のない最後のもの。

NSMutableArray* p = [NSMutableArray]; //this is autoreleased

これで release を呼び出すと、アプリケーションがクラッシュします。

于 2012-11-01T03:32:58.490 に答える