2010-12-17 16 views
0

MKMapViewというユーザーの場所のアドレスを取得しようとしています。MKReverseGeocoderがデリゲートを呼び出さない

は、ここに私のコードです:

CLLocationCoordinate2D userCoordinate = mapview.userLocation.location.coordinate; 


MKReverseGeocoder *geocoder = [[[MKReverseGeocoder alloc] initWithCoordinate:userCoordinate] autorelease]; 

geocoder.delegate = self; 
[geocoder start]; 

locationInstructions.text = @"Finding your location..."; 

NSLog(@"Started Geocoder"); 

ログが細かい呼び出されると、私はNSLog(%p,geocorder.delegate);をログインしている場合、それはnilを返しません。だから私の代議員に間違ったことはありません。これまでに呼び出されるデリゲートの

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error; 
{ 
    NSLog(@"Failed!"); 
} 

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark 
{ 
    NSString*str = [NSString stringWithFormat:@"%@,%@,%@,%@",[placemark thoroughfare],[placemark locality],[placemark administrativeArea],[placemark country]]; 

    NSLog(@"%@",str); 
} 

なし:デリゲートメソッドになりまし

[OK]をクリックします。どうしてこれなの?私は何が欠けていますか?

答えて

0

おそらくでなく、が最初にジオコーダを自動リリースします。

編集ごとに:ジオコーダをインスタンス変数/プロパティに割り当てます。インスタンス変数/プロパティは、そのオブジェクトがdeallocされたときに明示的に解放されます。

+0

これは例外を投げて、それを前もってリリースした場合にアプリケーションをクラッシュさせませんか? – Pripyat

+0

'autorelease'を削除すると、そのトリックが実行されました。なぜこれが起こるのか分かりませんが、うまくいきました! :) – Pripyat

+0

autoreleaseを取り除いても「動作する」が、今はメモリリークがあります。代わりに、Appleのサンプルアプリケーション[CurrentAddress](http://developer.apple.com/library/ios/#samplecode/CurrentAddress/Introduction/Intro.html)のパターンに従ってください。 – Anna

0

ヘッダーにMKReverseGeocoderDelegateを実装していますか?

+0

をはい私は。どちらの警告もありません... – Pripyat

+2

スコープではなく、ヘッダにジオコーダを定義することはできますか? – WrightsCS

+0

私は自分のアプリケーションの中で同じメソッドを使いました。ヘッダの定義は@property @synthesizeを使って私にとってはうまくいきます。 – WrightsCS

0

メソッドレベルで定義するのではなく、インスタンスレベルでMKReverseGeocoder *geoCoderを定義する必要があります。

私は同じ問題を抱えていたし、それは同様に私のために働いた:)

のRohit

関連する問題