1

OSX 用のフレームワークが見つからなかったため、CoreLocationフレームワークに出くわし、iOS Location Awareness Programming Guideに記載されている基本的な手順を実装しました。

// AppDelegate.h

#import <Cocoa/Cocoa.h>
#import <CoreLocation/CoreLocation.h>

@interface AppDelegate : NSObject<NSApplicationDelegate, CLLocationManagerDelegate> {
    CLLocationManager* m_locationManager;
}
@end

実装ファイルにはあま​​りありません...

// AppDelegate.m

- (void)applicationDidFinishLaunching:(NSNotification*)notification {
    m_locationManager = [[CLLocationManager alloc] init];
    m_locationManager.delegate = self;
    m_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [m_locationManager startUpdatingLocation];
}

#pragma mark - CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
    NSLog(@"%@ %@", self.className, NSStringFromSelector(_cmd));
}

- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation {
    NSLog(@"%@ %@", self.className, NSStringFromSelector(_cmd));
}

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error {
    NSLog(@"%@ %@", self.className, NSStringFromSelector(_cmd));
}

アプリケーションを起動すると、場所の検索を承認するよう求められます。しばらくするとまた同じ質問が出てきます。
問題:しかし、どのデリゲート メソッドも呼び出されません。


ところで: CLGeocoderを発表したApple と Google Mapsに関する興味深い記事。

4

2 に答える 2

2

このデリゲートを使用

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation;
于 2013-06-20T10:21:07.350 に答える
0

私が考えることができる2つのこと:

1)

あなたのアプリは MacOS 10.6 以降で動作しますか? その場合は、プロジェクトの「配置ターゲット」設定が 10.6 以降に設定されていることを確認してください。

2)

" " インターフェイス ファイルで、このオブジェクトがプロトコルに準拠していることを示す.hために必ず追加してください。<CLLocationManagerDelegate>アプリケーション デリゲートからこれを実行しようとしているように見えるため、宣言は次のようになります。

@interface AppDelegate : NSObject <NSApplicationDelegate, CLLocationManagerDelegate>
于 2012-04-17T15:45:40.667 に答える