の違いは何ですか
NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...]
と
NSMutableArray* p = [NSMutableArray arrayWithObjects:...]
最初のものでは、配列オブジェクトの所有権があり、それらを解放する必要があります。
NSMutableArray* p = [[NSMutableArray alloc] initWithObjects:...];
[p release];
&最後の1つは、配列オブジェクトの所有権がないため、解放する必要はありません。
NSMutableArray* p = [NSMutableArray arrayWithObjects:...]; //this is autoreleased
これでreleaseを呼び出すと、アプリケーションがクラッシュします。
[NSMutableArray arrayWithObjects:]
と同じです[[[NSMutableArray alloc] initWithObjects:] autorelease]
実際には、ARCを使用している場合でも違いはありません。
後者は基本的に[[NSMutableArray alloc] initWithObjects: ...]
、返された配列が自動解放されることを除いて、の省略形です(これは、手動の参照カウントをまだ実行している場合に重要です)。
initWithObjects
違いは、インスタンスメソッドとarrayWithObject
クラスメソッドの違いだと思います。