我的 LocationManager 设置在到达 didUpdateLocations 时变回默认值

My LocationManager settings are changing back to default when it reaches didUpdateLocations

所以,第一个stack overflow问题可是很久了reader ;)

我的 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" 作为 desiredAccuracy。我不确定我在这里错过了什么......我希望你们都能引导我朝着正确的方向前进。谢谢!

解决了我的问题...在我的 settingsDidChange 中,我正在重新分配我的 LocationManager,这导致它恢复为默认设置。以前没看到我觉得很傻!无论如何感谢您的帮助!

locationManager = [[CLLocationManager alloc] init];

啊啊啊!!!