我想我遗失了一些明显的东西 . 我有一个(CLLocation *)lastqueriedlocation在标头中定义为属性并合成 . 我想在locationManager中更新它:didUPdateToLocation:fromLocation:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
CLLocationDistance dist = [lastQueriedLocation getDistanceFrom:newLocation];
if (dist>1000) {
lastQueriedLocation = newLocation;
[self reSearch:lastQueriedLocation];
}
if ([resultArray count] > 0) {
[self findAndDisplayNearestLocation:location];
}
}
lastQueriedLocation在viewDidLoad中分配和初始化 .
问题是当然 lastQueriedLocation = newLocation;
导致 EXC_BAD_ACCESS
. 那么持久化lastQueriedLocation的正确方法是什么?
如果它有助于使问题更具体 - reSearch正在调用一个Web服务,在距离该位置2公里范围内获取POI - 所以我只想在移动1km时才这样做...但我仍然希望保持准确性最好所以我可以突出显示最近的,滚动 Map 等
1 回答
您只是设置iVar而不是合成属性,这意味着属性不会保留newLocation .
将
lastQueriedLocation = newLocation;
替换为:或者,如果您更喜欢使用点符号: