NSMutableArray* test = [NSMutableArray array];
NSMutableArray* test1 =[[NSMutableArray alloc]init];
違いはなんですか?
NSMutableArray* test = [NSMutableArray array];
NSMutableArray* test1 =[[NSMutableArray alloc]init];
違いはなんですか?
test
(割り当てなかったので)解放する必要はありませんが、 (割り当てたので) 解放する必要がありますtest1
(ARC が関与していないと仮定します)。
このメソッド[NSMutableArray array]
はすでにautorelease
ed 配列を返しています。
test
自動リリースされます。これは、現在の自動解放プールに追加されたことを意味し、プールが空になると (通常、現在の実行ループが終了すると)、解放メッセージが送信されます。他の誰も保持を送信していない場合は、その時点でメモリを解放できます。
test1
ではなく、有効な保持カウントが +1 です。解放するのはあなたの責任です。そうしないと、メモリがリークします。
2 つのステートメント間の関係:
[NSMutableArray array] equivalent to [[[NSMutableArray alloc] init] autorelease];
1 つ目はクラスの静的メソッドでNSMUtableArray
、初期化および自動再設定された配列を返します。2番目のステートメントでは、手動で割り当てて初期化します