gpt4 book ai didi

iphone - 为什么我的 CLLocationmanager 委托(delegate)没有被调用?

转载 作者:行者123 更新时间:2023-12-03 18:19:30 26 4
gpt4 key购买 nike

我在 SIM 卡或设备上都没有收到任何位置回调。我已经调用了这段代码:

- (void)startLocationCallbacks: (NSObject*) ignore
{
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
locationManager.distanceFilter = MINIMUM_METERS;

[locationManager startUpdatingLocation];
NSLog(@"[DEBUG] [locationManager startUpdatingLocation] (%@, %@)", locationManager, locationManager.delegate);
}

并且日志语句位于两者的顶部

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

但是这两个日志语句都没有被调用。我的应用程序已启用位置通知(如“设置”中所示,加上我说“允许”。)

我没有收到位置更新的可能原因有哪些?

配置/其他信息:

  • 我已经分配了 locationManager,并将其保存在保留属性中。
  • 我已调用 startUpdatingLocation
  • 我使用的是 4.1 SDK
  • Sim、iPod-touch(第 2 代)和 iPhone-3 均出现问题,均运行 4.1
  • 我的应用中允许位置通知(如“设置”中所示,并且因为我在提醒中点击了“允许”。)
  • 我之前曾成功使用过 CLLocationManager(在许多运输应用程序中!),这对我来说真是令人烦恼。

谢谢!

最佳答案

哇!好的,我找到了。

事实证明,使 CLLocationManager 不触发位置回调的方法之一是在非主线程中进行所有设置。当我将设置例程移至 performSelectorOnMainThread 时,一切都完全按预期工作。

真是一场噩梦!

希望这个答案可以帮助其他人......

编辑/澄清:

最初,我有这样的事情:

- (BOOL) appDidFinishLaunchingWithOptions: (NSDictionary*) options
{
// ...[app setup, snip]
[NSThread detachNewThreadSelector: @selector(postLaunchSetupThread) toTarget: self withObject: nil];
}

- (void)postLaunchSetupThread
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
// ...[other setup, snip]
[self setupLocationManager];
[pool release];
}

- (void)setupLocationManager
{
self.myLocationManager = [[[CLLocationManager alloc] init] autorelease];
[myLocationManager startLocationUpdates];
}

但是在线程中调用 setupLocationManager 会阻止回调。所以我的解决方法是移动线路

[self setupLocationManager];

退出线程并返回appDidFinishLaunchingWithOptions

关于iphone - 为什么我的 CLLocationmanager 委托(delegate)没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com