私は以下に出くわしました:
NSArray *array = @[object1, object2];
を作成しているようですNSArray
が、この配列インスタンスは自動解放されたオブジェクトですか、それとも解放する必要がありますか?
私は以下に出くわしました:
NSArray *array = @[object1, object2];
を作成しているようですNSArray
が、この配列インスタンスは自動解放されたオブジェクトですか、それとも解放する必要がありますか?
これは、xcode 4.4 以降に同梱されているコンパイラで使用できる新しいコレクション リテラルです。
@[object1, object2];
と同等です
[NSArray arrayWithObjects:object1, object2, nil];
はい、これは自動解放されたオブジェクトです。これを保持する必要がある場合は、次のことができます
myRetainedArray = [@[object1, object2] retain];
この質問には、すべての新しいリテラルの適切な説明があります
これは、配列を作成するための新しい llvm コンパイラのリテラルです。コンパイラはこれを次のように変更します。
NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];
したがって、自動解放されたオブジェクトを返しています。
Google で検索すると、さらに詳しい情報が表示されました。