ここにいくつかの簡単なコードがあります:
// 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
...への呼び出しを受信する必要があると思います。単にユーザーの現在地を取得しようとしています(マップを使用せずに)。任意のアイデアや考えをいただければ幸いです。