首页 文章

存储持久性CLLocation

提问于
浏览
0

我想我遗失了一些明显的东西 . 我有一个(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 回答

  • 1

    您只是设置iVar而不是合成属性,这意味着属性不会保留newLocation .

    lastQueriedLocation = newLocation; 替换为:

    [self setLastQueriedLocation:newLocation];
    

    或者,如果您更喜欢使用点符号:

    self.lastQueriedLocation = newLocation;
    

相关问题