私は次のように出くわした:@ [obj1、obj2]はどんな種類のオブジェクトを作成しますか?
NSArray *array = @[object1, object2];
それはNSArray
を作成しているようだが、この配列のインスタンスが自動解放オブジェクトである、または私はそれを解放しなければなりませんか?
私は次のように出くわした:@ [obj1、obj2]はどんな種類のオブジェクトを作成しますか?
NSArray *array = @[object1, object2];
それはNSArray
を作成しているようだが、この配列のインスタンスが自動解放オブジェクトである、または私はそれを解放しなければなりませんか?
これはXcodeの4.4に同梱のコンパイラで利用可能なリテラル新しいコレクションで、
@[object1, object2];
の上にあなたが必要な場合はそうはい、それは、自動解放オブジェクトである
[NSArray arrayWithObjects:object1, object2, nil];
に相当しますこれは保持することができます
myRetainedArray = [@[object1, object2] retain];
this questionはgoを持っていますすべての新しいリテラルの説明
これは、配列を作成するための新しいllvmコンパイラのリテラルです。コンパイラはこれを次のように変更します。
NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];
したがって、自動解放されたオブジェクトが返されます。
"コンパイラはこれを以下のように変更します:"いいえ、それは 'arrayWithObjects:count:'を使うように変更します。 – user102008
そして男、それは素晴らしいではありません。
Google検索は、さらに情報を育て!私のコードに紫色が必要です –
私はautoreleaseオブジェクトを作成する必要がある場合、上記のリテラルを使用することはできません? –
あなたはまだそれを使用することができます、後でアレイを保持する – wattson12