1

私が少しはっきりしていないことの 1 つは、これらの NSMutableArray メソッドの違いです。

// Class Method Style

NSMutableData *myMutableDataInstance = [NSMutableData dataWithLength:WholeLottaData];

// Instance Method Style

NSMutableData *myMutableDataInstance = nil;

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

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

乾杯、ダグ

4

1 に答える 1

5

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

インスタンス メソッドは、自分で割り当てなければならないオブジェクトを初期化します。あなたが書いたコードは実際には何もしませmyMutableArrayInstancenil。クラスメソッドはこれとほぼ同等です:

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

Peter Hosey がコメントで指摘しているように、これは実際には次のことを意味します。

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

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

于 2009-10-21T11:50:44.637 に答える