2012-04-17 11 views
1

私はCoreLocationフレームワークにつまずいたとiOS Location Awareness Programming Guideで説明したように、私はOSXのための1つを見つけることができなかったことから、基本的な手順を実施しました。MacOSで位置情報を取得するには?

// 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 and Google Mapsについての興味深い記事。私は考えることができる

答えて

0

2つのこと:

1)

あなたのアプリがMacOSの10.6 &新しい上で実行するつもりですか?その場合は、プロジェクトの「デプロイメントターゲット」設定が10.6以上に設定されていることを確認してください。あなたの「.h」インターフェイスファイルで

2)

、このオブジェクトはプロトコルに準拠していることを示すために、<CLLocationManagerDelegate>を追加してください。 *

@interface AppDelegate : NSObject <NSApplicationDelegate, CLLocationManagerDelegate> 
+0

はMac OS Xの導入目標*が設定されている*このデリゲートへ:あなたはあなたのアプリケーションのデリゲートからこれを実行しようとしているようですので、宣言は次のようになりますMac OS X 10.7 *を開き、ヘッダファイルにデリゲートを設定します。 – JJD

+0

これはどのマシンで実行していますか?私は、Macがこれに対応する場所のハードウェアを持っているかどうかはわかりません。 – rdelmar

+1

@rdelmarライオンを走らせているMac Proです。私の知る限り、位置APIはWIFI、GPSなどをカプセル化しているので、これを実行しているマシンの種類に違いはありません。 – JJD

2

使用

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation; 
関連する問題