6

現在、地図上にさまざまなピンを表示するアプリがあります。ユーザーの現在の位置を表示するように設定しようとしましmapView.showsUserLocation = YES;たが、これによりアプリがクラッシュし ("Program received signal: SIGABRT")、次のエラー メッセージが表示されました。

Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[MKUserLocation counter]: unrecognized selector sent to instance 0x10ad60'
Mon Oct 19 12:31:27 unknown Hull Ads[3111] <Error>: Stack: (...)

私は MKUserLocation を使用していないので、これは少し混乱していますか、それとも問題ですか?

アプリは、関連のない他の目的で CoreLocation を使用しますが、CoreLocation がまだ使用されていない場合、アプリは同じように応答します。

誰かがそれを助けることができれば、それは素晴らしいことです!

ありがとう - ジェームズ

4

2 に答える 2

24

このメソッドには、次のものが含まれていることを確認してください。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation class] == MKUserLocation.class) {
        return nil;
    }
    ...
}

私はあなたが今までにこれをすでに修正していることを願っています;)

于 2009-12-10T11:08:52.540 に答える
1

質問に答えてくれた Berend と、質問してくれた james.ingham に感謝します。私はこの問題の修正を何ヶ月も探していましたが、このスレッドで修正されました!

MKUserLocation ピンの種類を確認するのが最も論理的です。しかし、viewForAnnotation メソッドを実装するときにそれを覚えている人はいません。アプリで MKuserlocation を使用しない場合でも、将来問題が発生するのを避けるために、常にこのチェックを行うのが安全な方法です。

于 2010-02-22T12:29:44.287 に答える