ココアタッチ。これらのNSMutableDataメソッドの違いは何ですか?
-
05-07-2019 - |
質問
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:
メソッドが異なるオブジェクトを返す場合、上記とは異なる結果になります。
所属していません StackOverflow