如何在 Objective-C 中将值附加到数组
Posted
技术标签:
【中文标题】如何在 Objective-C 中将值附加到数组【英文标题】:How to append values to an array in Objective-C 【发布时间】:2010-09-13 06:11:41 【问题描述】:我正在这样做:
for(int i=0;i>count;i++)
NSArray *temp=[[NSArray alloc]initWIthObjects]i,nil];
NSLog(@"%i",temp);
它返回给我 0,1,2,3.... 一个一个计数,但我想要一个附加这些值 0,1,2,3,4,5... 的数组。 这没什么大不了的,但我找不到它。我是 iPhone 新手。
【问题讨论】:
不要使用 br 标签。使用“101010”按钮格式化代码。 【参考方案1】:NSMutableArray *myArray = [NSMutableArray array];
for(int i = 0; i < 10; i++)
[myArray addObject:@(i)];
NSLog(@"myArray:\n%@", myArray);
【讨论】:
之后一定要释放NSMutableArray
!
在for
循环中应该是i < count
。但是您只是从@user440485 的原件中复制了它。【参考方案2】:
由于以下几个原因,此代码没有执行您希望它执行的操作:
NSArray
不是一个“可变”类,这意味着它不是为了在创建后进行修改而设计的。可变版本是NSMutableArray
,它允许您附加值。
您不能将int
之类的原语添加到NSArray
或NSMutableArray
类;他们只持有物体。 NSNumber
类就是为这种情况而设计的。
每次分配数组时都会发生内存泄漏。始终将每次调用 alloc
与匹配调用 release
或 autorelease
配对。
你想要的代码是这样的:
NSMutableArray* array = [[NSMutableArray alloc] init];
for (int i = 0; i < count; i++)
NSNumber* number = [NSNumber numberWithInt:i]; // <-- autoreleased, so you don't need to release it yourself
[array addObject:number];
NSLog(@"%i", i);
...
[array release]; // Don't forget to release the object after you're done with it
我对您的建议是阅读Cocoa Fundamentals Guide 以了解一些基础知识。
【讨论】:
在 ARC 下,编译器会自动插入必要的保留和释放调用。所以就做array = nil
;【参考方案3】:
你可以做的更短的方法是:
NSMutableArray *myArray = [NSMutableArray array];
for(int i = 0; i < 10; i++)
[myArray addObject:@(i)];
NSLog(@"myArray:\n%@", myArray);
【讨论】:
以上是关于如何在 Objective-C 中将值附加到数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在Objective-C中将二维整数数组对象添加到NSMutableArray?
如何从 foreach 循环中将双精度值附加到 2D 数组,并访问前一个索引?