地図上のユーザーの位置を追跡するアプリを構築しています。簡単にピンを差し込めるのですが、場所を変えるとアプリが終了してしまいます。
viewdidload: メソッドでデフォルトの座標を 0,0 に設定し、その場所にピンを追加しました。場所が更新されたときにピンを削除し、新しい場所にピンを再度挿入したいので、これを行いました。
これは私が -(void)locationManager: didUpdateToLocation:fromLocation: メソッドで書いたコードです。
[mapview removeAnnotation:myannotation];
CLLocationCoordinate2D currentlocation;
currentlocation.latitude=newLocation.coordinate.latitude;
currentlocation.longitude=newLocation.coordinate.longitude;
myannotation=[[[CSMapAnnotation alloc]initWithCoordinate:currentlocation annotationType:CSMapAnnotationTypeStart title:@"My Location"] autorelease];
[mapview addAnnotation:myannotation];
ここで、myannotation は追加するピン、newLocation は更新された場所、CSMapAnnotation は注釈ビューを返します。
問題は、アプリが毎回クラッシュすることです。クラッシュする前に、コンソールに警告メッセージを表示できました。メッセージは次のとおりです。
「クラス CSMapAnnotation のインスタンス 0x182020 の割り当てが解除されていますが、キー値オブザーバーがまだ登録されています。観測情報が漏洩しており、誤って他のオブジェクトにアタッチされることさえあります。」
だから、誰かが同じ問題に直面しているなら、助けてください...