2010-07-12 66 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];

相關問題