Objective-Cでは、次のようなことを行う方法は
int array[] = {1, 2, 3, 4};
純粋なCで?
可能な限り最小のオーバーヘッド (コードおよび/またはランタイム) で NSArray を NSStrings で埋める必要があります。
Objective-Cでは、次のようなことを行う方法は
int array[] = {1, 2, 3, 4};
純粋なCで?
可能な限り最小のオーバーヘッド (コードおよび/またはランタイム) で NSArray を NSStrings で埋める必要があります。
コンパイル時のように配列を作成することはできません。それは「コンパイル時定数」ではないからです。代わりに、次のようなことができます。
static NSArray *tArray = nil;
-(void)viewDidLoad {
[super viewDidLoad];
tArray = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
}
これをプリコンパイルすることが本当に重要な場合は、テスト プロジェクトを作成し、必要な配列 (または任意のオブジェクト) を作成し、それを入力してから、NSKeyedArchiver (ファイルに保存されます) を使用してシリアル化することができると思います。次に、そのファイルをアプリに含めます。次に、NSKeyedUnarchiver を使用してオブジェクトを展開して使用する必要があります。これら2つのアプローチのパフォーマンスの違いはわかりません。この方法の利点の 1 つは、多くのオブジェクトを含む配列を初期化する必要がある場合に、コードの大きなブロックがないことです。
これを使って
NSArray *array = [NSArray arrayWithObjects:str1,str2, nil];
簡単です。NSArray<NSString*> *stringsArray = @[@"Str1", @"Str2", @"Str3", ...];
最新の ObjectiveC では、ジェネリックとリテラル配列が許可されています。
より短いコードNSArray *stringsArray = @[@"Str1", @"Str2", @"Str3", ...];
が必要な場合は、ジェネリックはオプションであり、配列要素にアクセスする場合にのみ役立つため、後でコードをテンプレート化された配列にキャストすることができます。
私が理解している限り、1次元配列が必要です.NSArrayのクラスメソッドを使用できます..たとえば
NSString *yourString;
NSArray *yourArray = [[NSArray alloc] initWithObjects:yourString, nil];
さらに必要な場合は、問題の詳細をお知らせください