1

ここにいくつかの簡単なコードがあります:

// ViewControllerA.m

-(void) viewDidLoad
{
    [super viewDidLoad];
    self.networkMonitor = [[NetworkMonitor alloc] init];

    ...

    [self.networkMonitor.locationManager startUpdatingLocation];

    ...
}

ネットワークモニター:

// NetworkMonitor.m

-(id) init
{
    self = [super init];
    if (self != nil) {
        self.locationManager = [[CLLocationManager alloc] init];
        [self.locationManager setDelegate:self];
    }
    return self;
}

...

// this is never called!
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations 
{


    NSLog(@"%s, location manager returned a new location.", __FUNCTION__);

    ...

}

// and neither is this
- (void)locationManager:(CLLocationManager *)manager
   didFailWithError:(NSError *)error
{
    NSLog(@"Error: %@", [error description]);
}

startUpdatingLocationを呼び出しましたが、NetworkMonitorはCLLocationManagerDelegateを実装しています...didUpdateLocationsへの呼び出しがないのはなぜですか?このメソッドをいつ呼び出すべきか誤解していますか?一度startUpdatingLocation呼び出されると、少なくとも1回はdidUpdateLocations...への呼び出しを受信する必要があると思います。単にユーザーの現在地を取得しようとしています(マップを使用せずに)。任意のアイデアや考えをいただければ幸いです。

4

1 に答える 1

5

iOS6用に構築していますか?ドキュメントから:iOS 5以前では、ロケーションマネージャーは代わりにlocationManager:didUpdateToLocation:fromLocation:メソッドを呼び出します。

于 2012-10-23T19:52:23.180 に答える