0

の違いは何ですか

NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...]

NSMutableArray* p = [NSMutableArray arrayWithObjects:...]
4

4 に答える 4

6

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

NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...];
[p release];

&最後の1つは、配列オブジェクトの所有権がないため、解放する必要はありません。

NSMutableArray* p = [NSMutableArray arrayWithObjects:...]; //this is autoreleased

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

于 2012-07-18T08:46:55.703 に答える
3

[NSMutableArray arrayWithObjects:]と同じです[[[NSMutableArray alloc] initWithObjects:] autorelease]

于 2012-07-18T08:42:03.787 に答える
2

実際には、ARCを使用している場合でも違いはありません。

後者は基本的に[[NSMutableArray alloc] initWithObjects: ...]、返された配列が自動解放されることを除いて、の省略形です(これは、手動の参照カウントをまだ実行している場合に重要です)。

于 2012-07-18T08:39:58.387 に答える
0

initWithObjects違いは、インスタンスメソッドとarrayWithObjectクラスメソッドの違いだと思います。

于 2012-07-18T08:44:11.613 に答える