5

在 Objective-C 中,如何做类似的事情是

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

在纯C?

我需要尽可能用最小开销(代码和/或运行时)的 NSStrings 填充 NSArray。

4

4 回答 4

7

不可能像在编译时那样创建数组。那是因为它不是“编译时间常数”。相反,您可以执行以下操作:

static NSArray *tArray = nil;

-(void)viewDidLoad {
    [super viewDidLoad];

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

如果你有这个预编译真的很重要,那么我想你可以创建一个测试项目,创建你需要的数组(或任何对象),填充它,然后使用 NSKeyedArchiver 序列化它(这会将它保存到文件中),并且然后将该文件包含在您的应用程序中。然后,您将需要使用 NSKeyedUnarchiver 取消归档对象以供使用。我不确定这两种方法之间的性能差异是什么。这种方法的一个优点是,如果您需要初始化一个包含大量对象的数组,您不需要大量代码。

于 2012-06-15T14:04:50.863 回答
-1

用这个

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

据我了解,您需要一个一维数组您可以使用NSArray的类方法.. 例如

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

如果您需要更多,请提供有关您的问题的更多详细信息

于 2012-06-15T12:49:33.947 回答
-2

就这么简单:NSArray<NSString*> *stringsArray = @[@"Str1", @"Str2", @"Str3", ...];现代 ObjectiveC 允许泛型和文字数组。

如果您想要更短的代码,那么NSArray *stringsArray = @[@"Str1", @"Str2", @"Str3", ...];,因为泛型是可选的,并且仅在访问数组元素时才有帮助,因此您可以稍后在代码中转换回模板化数组。

于 2015-10-22T18:02:56.253 回答