NSMutablearray自动替换以前的值

时间:2013-07-16 11:27:48

标签: iphone ios objective-c

替换以前添加的对象的数组。

array=[[NSMutableArray alloc]init];

NSNumber * index;

AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];
if(delegate.counter!=NumberImages.count)
{
    NSLog(@"%d",delegate.counter);

    imgview.tag=delegate.counter;

    NSLog(@"%ld",(long)imgview.tag);

    index=[[NSNumber alloc]initWithInt:[[firstNo objectAtIndex:imgview.tag]integerValue]];

    //int a=[[firstNo objectAtIndex:imgview.tag]integerValue];

    NSLog(@"%@",index);

    NSLog(@"%@",array);
}

[array addObject:index];

NSLog(@"%@",array);

问题在于,当我插入对象时,先前存在的对象被替换。

我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

根据定义,数组在每个索引处都有一个值。如果在同一索引中添加2个对象,则最后一个插入将覆盖所有过去的对象。此外,如果每次都创建数组,则每个数组都“删除”旧数组。事实上,你通过不释放来泄露记忆。

答案 1 :(得分:1)

问题在于:

 array=[[NSMutableArray alloc]init];

将其移至

-(void)viewDidLoad

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

应该修复。

因为您反复调用相同的函数,所以数组会重新初始化,并且只有1个值。

答案 2 :(得分:0)

if (!array) {
         array=[[NSMutableArray alloc]init];
}

我认为这会对你有所帮助。