2017-02-20 45 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塊中刪除您的位置管理器,因爲它已經是異步的。另外,如果將它保存在異步塊中,它的代理將在該線程中被回調。