调用以下行时,我收到一个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
答案 0 :(得分:1)
使用NSZombieEnabled设置运行代码。这应该告诉你是否过度释放或保留在某个地方。
答案 1 :(得分:0)
很难说没有证明你在哪里/如何创建“currentLocation”,“location”,甚至可能是“self”。我猜测在创建/设置时没有正确保留currentLocation或self.location。
答案 2 :(得分:0)
你需要保留一些东西......
[currentLocation retain]
或
[self.location retain];
但你必须进一步完善代码。有些东西被“遗忘”或“超出范围”,所以请尝试保留。
请勿忘记释放,无论您是否保留。