2010-07-12 81 views
0

我只有m代码。文件NSMutableArray Exc_Bad_Access

NSMutableArray * arrayOfBools; 

    arrayOfBools=[[NSMutableArray alloc] initWithCapacity:1000]; 

NSNumber *ijk =(NSNumber*) 9; 

     [arrayOfBools addObject:ijk];     

获取错误o [arrayOfBools addObject:ijk];

+0

Obj-C不会自动在不同类型之间进行转换,并且你正在用'(NSNumber *)'进行的操作称为类型转换,除非你知道你在做什么,应该避免。在这个例子中,你将一个整数转换成一个指针,并带来灾难性的结果。 – lucius 2010-07-12 15:43:16

回答

4

你不能像这样声明和设置一个NSNumber:NSNumber *ijk =(NSNumber*) 9;。 这将设置为一个整数(9)。

使用此:

NSNumber *ijk = [NSNumber numberWithInt:9]; 
1

第三行中,NSNumber的声明是不正确。如果你试图把一个布尔值换成NSNumber,使用NSNumber *test = [NSNumber numberWithBool:YES];