3

配列の初期化との違いは何ですか

NSArray * array = [NSArray array];

NSArray * array = @[];
4

2 に答える 2

9

@[]は次の省略形です。

id a = nil;
NSArray* array = [NSArray arrayWithObjects:&a count:0];

[NSArray array]これは、すべての意図と目的のために、実際には単に省略形です。

これは、コンパイラの特定のバージョンで追加された機能です (実際には、この特定の構文のランタイム サポートは必要ありません)。

これは、コンパイル時定数を生成し、実行時にメッセージを送信しないinの短縮形とはまったく異なります。実際、(any ) は特別なケースであり、ランタイムでメッセージングなしで実現されるコンパイル時定数を発行します。ダイナミズムゼロ。Aは、オブジェクトの通常のインスタンスよりも、Objective-C クラスに似ています。@""@""@""@"sequence"@"..."

于 2013-01-23T16:11:55.250 に答える
7

NSArray * array = @[];新しいやり方ですNSArray * array = [NSArray array];

于 2013-01-23T15:47:10.370 に答える