我正在尝试使用for循环生成整数数组。这是我的代码:
int total = 20;
for(int x = 0; x < total; x++)
{
NSArray arr = [NSArray arrayWithObjects: [NSNumber numberWithInt:total]];
}
通过上面的实现,我只得到数组中的一个对象,最后一个。怎么办arr来包含从1到20的数字?
答案 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]];
}