2017-02-20 2 views
0

매우 이상한 문제가 발생했습니다. 위치 관리자 대리인 메서드가 호출되지 않고 있는데 _locManager.location을 확인하면 업데이트 된 위치가 표시됩니다.Xcode : didUpdateLocations가 호출되지 않았지만 위치 관리자가 업데이트 중임

추신 : 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 블록에서 위치 관리자를 제거하십시오. 또한 async 블록에 유지하면 대리자가 해당 스레드에서 다시 호출됩니다.

관련 문제