5

Objective-Cでは、次のようなことを行う方法は

int array[] = {1, 2, 3, 4};

純粋なCで?

可能な限り最小のオーバーヘッド (コードおよび/またはランタイム) で NSArray を NSStrings で埋める必要があります。

4

4 に答える 4

7

コンパイル時のように配列を作成することはできません。それは「コンパイル時定数」ではないからです。代わりに、次のようなことができます。

static NSArray *tArray = nil;

-(void)viewDidLoad {
    [super viewDidLoad];

    tArray = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
}

これをプリコンパイルすることが本当に重要な場合は、テスト プロジェクトを作成し、必要な配列 (または任意のオブジェクト) を作成し、それを入力してから、NSKeyedArchiver (ファイルに保存されます) を使用してシリアル化することができると思います。次に、そのファイルをアプリに含めます。次に、NSKeyedUnarchiver を使用してオブジェクトを展開して使用する必要があります。これら2つのアプローチのパフォーマンスの違いはわかりません。この方法の利点の 1 つは、多くのオブジェクトを含む配列を初期化する必要がある場合に、コードの大きなブロックがないことです。

于 2012-06-15T14:04:50.863 に答える
-1

これを使って

NSArray *array = [NSArray arrayWithObjects:str1,str2,  nil];
于 2012-06-15T12:47:04.500 に答える
-2

簡単です。NSArray<NSString*> *stringsArray = @[@"Str1", @"Str2", @"Str3", ...];最新の ObjectiveC では、ジェネリックとリテラル配列が許可されています。

より短いコードNSArray *stringsArray = @[@"Str1", @"Str2", @"Str3", ...];が必要な場合は、ジェネリックはオプションであり、配列要素にアクセスする場合にのみ役立つため、後でコードをテンプレート化された配列にキャストすることができます。

于 2015-10-22T18:02:56.253 に答える
-2

私が理解している限り、1次元配列が必要です.NSArrayのクラスメソッドを使用できます..たとえば

NSString *yourString;
NSArray  *yourArray = [[NSArray alloc] initWithObjects:yourString, nil];

さらに必要な場合は、問題の詳細をお知らせください

于 2012-06-15T12:49:33.947 に答える