我正在尝试使用for循环生成整数数组。这里是我的代码:使用for循环创建数组
int total = 20;
for(int x = 0; x < total; x++)
{
NSArray arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:total]];
}
通过上述实施我得到了数组只有一个对象,是最后一个。该怎么做arr来包含从1到20的数字?
我正在尝试使用for循环生成整数数组。这里是我的代码:使用for循环创建数组
int total = 20;
for(int x = 0; x < total; x++)
{
NSArray arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:total]];
}
通过上述实施我得到了数组只有一个对象,是最后一个。该怎么做arr来包含从1到20的数字?
int total = 20;
NSMutableArray *arr = [[NSMutableArray alloc] init];
for(int x = 0; x < total; x++)
{
[arr addObject:[NSNumber numberWithInt:x]];
}
// release the array when you are done with it.
NSMutableArray *arr = [NSMutablearray arrayWithCapacity:total];
for(int x = 0; x < total; x++)
{
[arr addObject:[NSNumber numberWithInt:x]];
}
在每一个循环中,您创建了一个对象新的数组。在这个例子中你创建数组一次,而不仅仅是添加对象。
你应该在循环之外初始化你的数组,而不是在循环中。
你的代码改成这样:
int total = 20;
NSMutableArray *arr = [NSMutableArray array];
for(int x = 0; x < total; x++)
[arr addObject:[NSNumber numberWithInt:x]];
你每次都重新创建阵列。将NSArray
设为iVar或在循环之外初始化它。
NSArray
是一个不可变的类(这意味着你不能添加/删除对象的运行时),你在这里做什么是很奇怪的。你在循环中创建一个新的数组。
您可以使用NSMutableArray
,但在循环的外部。通过这种方式,您可以在循环外部获得引用,并且可以向其添加对象。 NSMutableArray
是可变的。您可以更改对象运行时。
NSMutableArray* numberArray = [[NSMutableArray alloc] init];
for(int x = 0; x < total; x++)
{
[numberArray addObject:[NSSnumber numberWithInt:x]];
}
+1解释 – 2012-02-02 17:58:06
@helk非常感谢你 – 2012-02-02 18:01:00
每次创建新的NSArray
并将其分配给NSArray *arr
。 +arrayWithObjects:
方法创建一个新的数组。 NSArray不可变,你应该使用NSMutableArray
。
NSArray的创建静态数组,和创建的NSMutableArray动态 阵列。
NSMuatbleArray *arr = [[NSMutableArray alloc]init];
for(int i =0 ; i<20 ; ++i)
{
[array addObject:[NSNumber numberWithInt:i]];
}
'[[NSMutableArray alloc] init];'而不是'[NSMutableArray alloc] init]'。干杯 – 2012-02-02 17:48:16
@Flex_Addicted:你知道你可以编辑来自拼写错误的回复=)我会改变它,thanx m8! – 2012-02-02 17:55:23
是的,但只有在至少修改了6个字符的情况下才能编辑问题。也许我错了...无论如何谢谢。 – 2012-02-02 17:59:30