7

私は以下に出くわしました:

NSArray *array = @[object1, object2];

を作成しているようですNSArrayが、この配列インスタンスは自動解放されたオブジェクトですか、それとも解放する必要がありますか?

4

2 に答える 2

9

これは、xcode 4.4 以降に同梱されているコンパイラで使用できる新しいコレクション リテラルです。

@[object1, object2];

と同等です

[NSArray arrayWithObjects:object1, object2, nil];

はい、これは自動解放されたオブジェクトです。これを保持する必要がある場合は、次のことができます

myRetainedArray = [@[object1, object2] retain];

この質問には、すべての新しいリテラルの適切な説明があります

于 2012-08-01T12:55:39.517 に答える
0

これは、配列を作成するための新しい llvm コンパイラのリテラルです。コンパイラはこれを次のように変更します。

NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];

したがって、自動解放されたオブジェクトを返しています。

Google で検索すると、さらに詳しい情報が表示されました。

http://clang.llvm.org/docs/ObjectiveCLiterals.html

于 2012-08-01T12:57:08.740 に答える