2014-05-04 35 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