2014-05-04 31 views
0
-(NSArray*)createArrayWithObjectsNamed:(NSString*)string{ 

    if (!_numberArray){ 
     [self createArrayOfNumbers]; 
    } 

    NSString *object; 
    NSMutableArray *mutableArray; 

    for (int i = 0; i <= 9; i++) { 
     object = [NSString stringWithFormat:@"%@%@",string,_numberArray[i]]; 
     NSLog(@"array %@",object); 
     [mutableArray addObject:object]; 
    } 

    NSLog(@"value of mutableArray %@",mutableArray); 

    NSArray *array; //= [NSArray arrayWithArray:mutableArray]; 

    array = [mutableArray copy]; 

    NSLog(@"array in func %@",array); 

    return array; 

} 

嗨,当我运行createArrayWithObjectNamed:string它应该运行for语句十次,并在语句结束时每次添加新的对象值,但它不。 当我在mutableArray上运行NSlog时,它的值是(NULL)NSMutableArray值不被分配

这里怎么回事?

回答

1

您的mutableArray变量未初始化。在这种情况下,它是nil,但它可能是一些任意值,这可能会导致解除引用时产生EXC_BAD_ACCESS异常。

NSMutableArray *mutableArray = [[NSMutableArray alloc] init]; 
+0

一旦方法返回数组,它会自动释放吗? – Mutch95

+1

如果您使用ARC(自动引用计数),则一切都会正常工作。具体来说,'alloc'将保留计数递增为1,然后编译器在方法返回之前将'release'消息插入'mutableArray'。 – fumoboy007