我的LocationManager设置在到达didUpdateLocations时会更改回默认值

时间:2015-11-04 21:47:38

标签: ios objective-c cllocationmanager locationmanager cllocation

所以,首先是堆栈溢出问题,但长时间读者;)

我的LocationManager设置在到达didUpdateLocations时会更改回默认值。我在viewDidLoad中设置了一个观察者以及一些默认值。我还在其他任何事情之前分配,启动和设置locationManager的委托。

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(settingsDidChange:)
                                             name:NSUserDefaultsDidChangeNotification
                                           object:nil];

NSMutableDictionary *defaultsDictionary = [[NSMutableDictionary alloc] init];

[defaultsDictionary setObject:@(kCLLocationAccuracyNearestTenMeters) forKey:[SettingKeys LocationTrackingAccuracyPrefs]];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsDictionary];

以下是正在观察的settingsDidChange以及我尝试设置locationManager的desiredAccuracy的位置。

- (void)settingsDidChange:(NSNotification *)notification
{
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults];
CLLocationAccuracy desiredAccuracy = [settings doubleForKey:[SettingKeys LocationTrackingAccuracyPrefs]];
locationManager.desiredAccuracy = desiredAccuracy;
}

在一个单独的“设置”视图中,我正在更改desiredAccuracy的值,该值似乎在转到didUpdateLocations之前一直存在。然后无论我把它设置为什么它似乎恢复(或永远不会改变)到" Best"作为理想的精确度。我不确定我在这里失踪了什么......我希望所有人都能引导我朝着正确的方向前进。谢谢!

1 个答案:

答案 0 :(得分:1)

想出我的问题...在我的settingsDidChange中进一步向下我正在重新分配我的LocationManager,这导致它恢复到默认设置。我之前没有看到它感到愚蠢!无论如何,谢谢你的帮助!

locationManager = [[CLLocationManager alloc] init];

ARRRGGG !!!