私は自分のlocationManagerで以下を実装しようとしました:
ユーザーの場所の更新を開始しています
- (void)startStandardUpdates {
if (self.locationManager == nil) {
self.locationManager = [[CLLocationManager alloc] init];
}
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// Set a movement threshold for new events
self.locationManager.distanceFilter = kCLLocationAccuracyNearestTenMeters;
[self.locationManager startUpdatingLocation];
CLLocation *currentLocation = self.locationManager.location;
if (currentLocation) {
self.currentLocation = currentLocation;
}
}
プロパティに通知を送信するためのカスタム セッターを実装する
- (void)setCurrentLocation:(CLLocation *)currentLocation {
self.currentLocation = currentLocation;
NSLog(@"%f", currentLocation.coordinate.latitude);
//Notify the app of the location change
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:self.currentLocation forKey:kIFLocationKey];
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:kIFLocationChangeNotification object:nil userInfo:userInfo];
});
}
問題: アプリを実行すると、デバッグ モードの "setCurrentLocation" メソッドで "BAD_EXEC (コード 2)" エラー メッセージが表示され、アプリがハングアップします。しかし、私は問題を理解していません。私は何かを逃しましたか?私が見る限り、「startStandardUpdates」では、ロケーション マネージャーがユーザーの場所を見つけた場合、カスタム セッター「self.currentLocation = currentLocation」を使用して、プロパティ「currentLocation」が更新されています。
事前にご協力いただきありがとうございます。よろしくセバスチャン