質問

1つわかりにくいのは、これらのNSMutableArrayメソッドの違いです:

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

and

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

myMutableDataInstance = [[[NSMutableData alloc] initWithLength:WholeLottaData]] autorelease];

内部では、クラスメソッドは実際に何をしているのでしょうか?インスタンスメソッドとどう違うのですか?

乾杯、 ダグ

役に立ちましたか?

解決

クラスメソッドは、NSMutableArrayオブジェクトを作成および自動解放します。

インスタンスメソッドは、自分で割り当てる必要があるオブジェクトを初期化します。 myMutableArrayInstance nil であるため、作成したコードは実際には何もしません。クラスメソッドはこれとほぼ同等です:

NSMutableArray *myMutableArrayInstance = [NSMutableArray alloc];
[myMutableArrayInstance initWithCapacity:WholeLottaData];
[myMutableArrayInstance autorelease];

そして、Peter Hoseyがコメントで述べているように、それは本当にこれを意味します:

NSMutableArray *myMutableArrayInstance = [[[NSMutableArray alloc]
                                           initWithCapacity:WholeLottaData]
                                           autorelease];

initWithCapacity:メソッドが異なるオブジェクトを返す場合、上記とは異なる結果になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top