2011-04-07 48 views
0

我創建一個數組,像這樣:Cocoa Objective C,在創建數組時獲取EXC_BAD_ACCESS?

NSString *str = [NSString stringWithString:@"testString"]; 
int id1 = 4; 
NSArray *data = [NSArray arrayWithObjects:str, id1, @"TEST TEST TEST", nil]; 

但在運行它的未來與「EXC_BAD_ACCESS」,但世界上沒有一個沒有被定義的變量:S

回答

4

製作ID1一個NSNumber的。

NSNumber *number = [NSNumber numberWithInt:id1]; 
6

NSArray只能容納對象,而id1不是對象。使用的NSNumber來包裝它,你可以在陣列中的存儲對象:

NSNumber *id1Obj = [NSNumber numberWithInt:id1]; 
5

id1不是NSObject,這是一個基本類型。您只能將NSObject派生的對象添加到NSArray。

EXC_BAD_ACCESS可能是因爲在封面下它嘗試訪問存儲在int指向的任何位置的對象。換句話說,它使用int作爲指向NSObject的指針,當它這樣做時會發生可怕的錯誤。