Cocoa Objective C,在创建数组时获得EXC_BAD_ACCESS?

Dan*_*iel 0 arrays cocoa objective-c

我正在创建一个这样的数组:

NSString *str = [NSString stringWithString:@"testString"];
int id1 = 4;
NSArray *data = [NSArray arrayWithObjects:str, id1, @"TEST TEST TEST", nil];
Run Code Online (Sandbox Code Playgroud)

但是在运行时它会出现"EXC_BAD_ACCESS",但是没有声明的变量:S

She*_*ley 6

NSArray只能保存对象,而id1不是对象.使用NSNumber将其包装在可以存储在数组中的对象中:

NSNumber *id1Obj = [NSNumber numberWithInt:id1];
Run Code Online (Sandbox Code Playgroud)


rei*_*ein 5

id1不是NSObject,它是一种基本类型.您只能将NSObject派生的对象添加到NSArray.

EXC_BAD_ACCESS可能是因为,在封面下,它试图访问存储在int指向的任何地方的对象.换句话说,它使用你的int作为指向NSObject的指针,当它这样做时失败可怕.