2013-12-21 29 views
2

CLLocationManager不会回拨方法:CLLocationManager不会再打委托方法

locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; 

用户的权限之后。

我在singleton类(管理器的种类)中分配CLLocationManager实例,将委托分配给self,所有的都看起来很好,但不起作用。

此外,我的应用程序中有很多多线程逻辑,我认为问题是死锁或与多线程相关的其他问题。

我该如何揭示出什么问题。

P.S.我也尝试致电

startMonitoringSignificantLocationChanges; 

在主线程上,这并没有帮助。

+0

授权后,[CLLocationManager locationServicesEnabled]返回什么? –

+0

我不会打电话给startMonitoringSignificantLocationChanges,但我打电话给startUpdatingLocation,这个工作很完美,委托方法被解雇了 – iiFreeman

+0

@PatrickGoley返回“YES”。但它看起来CLLocationManager由于某种原因被冻结,因此不会调用回调函数。 – Nikita

回答

1

好吧,经过几小时的尝试,我发现这个: post

解决方案是在主线程上分配CLLocationManager。

0

您是否强烈参考CLLocationManager?它应该是一个强大的属性@property CLLocationManager *myManager;或在你的类的实现中的ivar(实例变量)。如果你正在函数/方法中实例化CLLocationManager,并且没有给出任何引用,它将在你完成该函数后立即释放。

对该实例有强烈的参考。

0

alloc/init CLocationManager尽快viewDidLoad被调用为我工作。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    locationManager = [[CLLocationManager alloc] init]; 
}