带吸气剂的EXC_BAD_ACCESS

时间:2014-03-11 14:58:41

标签: ios objective-c exc-bad-access

使用以下代码时遇到问题(使用带有ios 7.1的xcode 5)

Player *aPlayer = theDungeon.thePlayer;
int r = aPlayer.lampRed;
int g = aPlayer.lampGreen;
int b = aPlayer.lampBlue;

Player *aPlayer = theDungeon.thePlayer;

返回一个有效的Player对象,其上面显示的每个属性都悬停在这个变量上并展开它,我可以看到lampRed等等。

int r = aPlayer.lampRed;

在这一行,我收到了错误的访问错误。

这是财产:

  @property int lampRed;

知道为什么吗?

1 个答案:

答案 0 :(得分:1)

当对象未初始化或对象已被释放时,将显示EXC_BAD_ACCESS。

所以我认为你没有正确初始化对象而你正试图访问他的属性。

您必须实例化对象:

Player *aPlayer = [[Player alloc]init];

然后你可以访问他的财产的

使用:

@property(nonatomic, assign) int lampRed;

代替

@property int lampRed;

另一方面,这非常重要,您必须使用.m文件中的属性:

@synthesize lampRed;

有了这个,你就获得了getter和setter,否则没有。