使用for循环创建数组

时间:2012-02-02 17:35:36

标签: objective-c ios

我正在尝试使用for循环生成整数数组。这是我的代码:

int total = 20;

for(int x = 0; x < total; x++)
{
   NSArray arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:total]];
}

通过上面的实现,我只得到数组中的一个对象,最后一个。怎么办arr来包含从1到20的数字?

6 个答案:

答案 0 :(得分:2)

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.

答案 1 :(得分:2)

您应该在循环之外而不是在循环内部初始化数组。

将您的代码更改为:

int total = 20;
NSMutableArray *arr = [NSMutableArray array];
for(int x = 0; x < total; x++)
   [arr addObject:[NSNumber numberWithInt:x]];

答案 2 :(得分:1)

您每次都在重新创建数组。将NSArray设为iVar或在循环之外初始化它。

答案 3 :(得分:1)

NSArray是一个不可变类(它意味着你不能添加/删除对象运行时),你在这里做的很奇怪。您在循环内创建一个新数组。

您可以在循环外部使用NSMutableArray。通过这种方式,您可以在循环外部使用引用,并可以向其中添加对象。 NSMutableArray是可变的。您可以更改对象运行时。

NSMutableArray* numberArray = [[NSMutableArray alloc] init];

for(int x = 0; x < total; x++)
{
   [numberArray addObject:[NSSnumber numberWithInt:x]];
}

答案 4 :(得分:0)

NSMutableArray *arr = [NSMutablearray arrayWithCapacity:total];
for(int x = 0; x < total; x++)
{
   [arr addObject:[NSNumber numberWithInt:x]];
}

在每个循环中,您使用一个对象创建了新数组。在这个例子中,你创建一次数组,而不仅仅是添加对象。

答案 5 :(得分:0)

每次创建新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]];
}