2017-02-20 65 views
0

我面临很奇怪的问题。位置管理器委托方法没有被调用,但如果我检查_locManager.location那么它给了我更新的位置。Xcode:didUpdateLocations没有打电话,但位置管理器正在更新

PS:NSLocationAlwaysUsageDescription在plist中被提及。

另外我也打电话给[self.locationManager requestAlwaysAuthorization]

这里是位置管理器设置代码的要求。

dispatch_async(dispatch_get_main_queue(), ^{ 

      _locManager = [[CLLocationManager alloc] init]; 

      _locManager.delegate = self; 

      _locManager.distanceFilter = kCLDistanceFilterNone; 

      _locManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; 

      _locManager.activityType = CLActivityTypeFitness; 

      if ([_locManager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
      { 
       [_locManager requestAlwaysAuthorization]; 
      } 
      if ([_locManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) 
      { 
       self.locManager.allowsBackgroundLocationUpdates =YES; 
      } 
      _locManager.pausesLocationUpdatesAutomatically=YES; 

     }); 
+0

显示代码(您在哪里设置委托)。 – shallowThought

+0

请将此密钥也添加到plist文件中NSLocationWhenInUseUsageDescription –

+0

@JeckyModi我为什么要这样做?任何具体原因? –

回答

0

async块中删除您的位置管理器,因为它已经是异步的。另外,如果将它保存在异步块中,它的代理将在该线程中被回调。