2009-08-17 8 views
0

私はどこかに明白な何かがないと思います。 私は(CLLocation *)lastqueriedlocationをプロパティとしてヘッダに定義して合成しました。 didUPdateToLocation:fromLocation:私はlocationManagerでそれを更新したい永続的なCLLocationの保存

 
- (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はallocedとのviewDidLoadでinit'dされます。

もちろん、lastQueriedLocation = newLocation;の結果はEXC_BAD_ACCESSになります。では、lastQueriedLocationを永続化する正しい方法は何ですか?

もし問題がより具体的になるのであれば、reSearchは場所の2km以内にPOIを取得しているWebサービスを呼び出しているので、私たちが1km移動したときにしかやりたいことはありません...しかし、一番近いところをハイライトして地図をスクロールすることができます。

答えて

1

合成されたプロパティではなくiVarを設定するだけで、newLocationはプロパティによって保持されません。

self.lastQueriedLocation = newLocation; 
:あなたはむしろ、ドット表記を使用したい場合は、

[self setLastQueriedLocation:newLocation]; 

または:

lastQueriedLocation = newLocation;を交換してください

関連する問題