在iPhone中返回CGRect时EXC_BAD_ACCESS

时间:2010-05-27 11:52:51

标签: iphone

我有一个必须从其中一个方法返回CGRect的类:

-(CGRect)myRect
{
    CGRect rect = CGRectMake(self.mySprite.position.x,self.mySprite.position.y,self.mySprite.textureRect.size.width, self.mySprite.textureRect.size.height);
    return rect;
}

一旦我尝试访问mySprite ivar,我就会得到一个exc_bad_access。

事情是,如果我调用它,实例变量mySprite充满了垃圾。但是,如果我将函数更改为返回void,则self.mySprite确实包含正确的数据。

-(void)myRect
{
    CGRect rect = CGRectMake(self.mySprite.position.x,self.mySprite.position.y,self.mySprite.textureRect.size.width, self.mySprite.textureRect.size.height);
    return rect;
}

访问mySprite时不会崩溃...

2 个答案:

答案 0 :(得分:1)

可能是编译器识别出第二个示例中的代码没有做任何事情并将其优化掉。

答案 1 :(得分:0)

我无法解决这个问题,我尝试了一切。访问的所有对象都没问题,如果我试图从他们那里得到一个属性,我得到正确的数据,如果我改变方法返回任何其他工作正常。

我通过在主类上有一个通用方法来解决这个问题,每个对象都调用它来传递给它。这样就可以了。