gpt4 book ai didi

objective-c - 如何在Objective-C中声明一个字符串类型的二维数组?

转载 作者:太空狗 更新时间:2023-10-30 03:11:05 27 4
gpt4 key购买 nike

如何在Objective-C中声明一个字符串类型的二维数组?

最佳答案

首先,您可能会考虑使用一个类来保存内部数组的字符串,或从 plist 文件加载它(在其中很容易制作一个二维字符串数组)。

对于直接声明,您有两种选择。如果你想使用 NSArray,你必须像这样手动创建结构:

NSMutableArray *strings = [NSMutableArray array];
for(int i = 0; i < DESIRED_MAJOR_SIZE; i++)
{
[strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]];
}

或者,使用数组字面量,您可以获得这样的不可变版本:

NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ]

然后你可以像这样使用它:

NSString *s = [[strings objectAtIndex:i] objectAtIndex:j];

这在初始化时有些笨拙,但如果您想使用 NSArray 方法,这是可行的方法。

另一种方法是使用 C 数组:

NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil

然后像这样使用它:

NSString *s = strings[i][j];

这不那么尴尬,但是在将值放入数组和从数组中删除它们时,您必须小心保留/复制释放 值。 (当然,除非你使用的是 ARC!)NSArray 会为你做这个,但是对于 C 风格的数组,你需要做这样的事情来替换数组:

[strings[i][j] release];
strings[i][j] = [newString retain];

另一个区别是您可以将 nil 放入 C 样式数组中,但不能放入 NSArrays - 为此您需要使用 NSNull。另请查看 Stack Overflow 问题 Cocoa: Memory management with NSString 有关 NSString 内存管理的更多信息。

关于objective-c - 如何在Objective-C中声明一个字符串类型的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com