存储持久性CLLocation

时间:2009-08-17 08:49:20

标签: objective-c iphone persistence core-location

我想我错过了一些明显的东西。 我有一个(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];
    }   
}

在viewDidLoad中分配并初始化了lastQueriedLocation。

问题是lastQueriedLocation = newLocation;当然导致EXC_BAD_ACCESS。那么持久化lastQueriedLocation的正确方法是什么?

如果它有助于使问题更具体 - reSearch正在调用一个Web服务,在距离该位置2公里范围内获取POI - 所以我只想在移动1km时才这样做...但我仍然希望保持准确性最好,所以我可以突出显示最近的,滚动地图等。

1 个答案:

答案 0 :(得分:1)

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

lastQueriedLocation = newLocation;替换为:

[self setLastQueriedLocation:newLocation];

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

self.lastQueriedLocation = newLocation;