收到EXC_BAD_ACCESS信号

时间:2010-10-14 15:44:44

标签: iphone objective-c

调用以下行时,我收到一个EXC_BAD_ACCESS信号:

self.distance = [NSNumber numberWithDouble:[currentLocation distanceFromLocation: self.location]];

这只发生在iOS 3.2 for iPad中,

我知道这是一个内存问题,但我似乎无法看到上述行有什么问题?

编辑:这是完整的方法:

-(void)updateDistance:(CLLocation *)currentLocation {

    self.distance = [NSNumber numberWithDouble:[currentLocation distanceFromLocation:self.location]];

    placeWrapper.distance = self.distance;

}

这样称呼:

[place updateDistance:self.currentLocation];

在此创建self.currentLocation:

CLLocation *location = [[CLLocation alloc] initWithLatitude:newLocation.coordinate.latitude longitude:newLocation.coordinate.longitude];

self.currentLocation = location;

[location release];

另一个编辑:)

这是堆栈跟踪:http://pastie.org/1222992

3 个答案:

答案 0 :(得分:1)

使用NSZombieEnabled设置运行代码。这应该告诉你是否过度释放或保留在某个地方。

答案 1 :(得分:0)

很难说没有证明你在哪里/如何创建“currentLocation”,“location”,甚至可能是“self”。我猜测在创建/设置时没有正确保留currentLocation或self.location。

答案 2 :(得分:0)

你需要保留一些东西......

[currentLocation retain]

[self.location retain];

但你必须进一步完善代码。有些东西被“遗忘”或“超出范围”,所以请尝试保留。

请勿忘记释放,无论您是否保留。