2010-09-13 68 views
23

我这样做:如何将值附加到在Objective-C数组

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新手。

+0

不要使用BR标记。使用“101010”按钮格式化代码。 – 2010-09-13 06:13:31

回答

55
NSMutableArray *myArray = [NSMutableArray array]; 

for(int i = 0; i < 10; i++) { 
    [myArray addObject:[NSNumber numberWithInt:i]]; 
} 

NSLog(@"myArray:\n%@", myArray); 
+0

确保后来释放'NSMutableArray'! – 2010-09-13 06:52:35

+0

啊,是的,我认为我需要在我的回答中加上提醒 – vodkhang 2010-09-13 07:00:20

+0

它可能应该是'for'循环中的'我'。但你只是从@ user440485的原版复制它。 – JohnK 2013-05-22 19:25:11

10

这个代码是没有做你想让它有以下几个原因做什么:

  1. NSArray不是一个“可变”级,这意味着它的设计没有它的创建后进行修改。可变版本是NSMutableArray,它可以让你追加值。

  2. 您不能将类似int的图元添加到NSArrayNSMutableArray类;他们只持有物品。 NSNumber类是为这种情况而设计的。

  3. 您每次分配数组时都在泄漏内存。请始终将每个电话与alloc配对,拨打电话releaseautorelease

你想要的代码是这样的:

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了解一些基本知识。

1

你可以做一个简短的形式是:

NSMutableArray *myArray = [NSMutableArray array]; 

for(int i = 0; i < 10; i++) { 

    [myArray addObject:@(i)]; 
} 

NSLog(@"myArray:\n%@", myArray);