iOS 에서 위치 추적(location manager)에 로그 로그 로그 가 나타 나 는 해결 방법

머리말
최근 에 문 제 를 발 견 했 습 니 다.iOS 10.0 이후 프로젝트 에 포 지 셔 닝 관리자 에 대한 로그 정보 가 자주 나타 나 서 포 지 셔 닝 관리자 가 메 인 스 레 드 에 두 는 것 이 좋 습 니 다.실제 개발 에서 하위 스 레 드 에 포 지 셔 닝 관리 자 를 만 들 면 리 셋 정 보 를 받 지 못 할 수 있 습 니 다.
알림 정 보 는 다음 과 같 습 니 다.

A location manager (0x7fbafac12560) was created on a dispatch queue executing on a thread other than the main thread. It is the developer's responsibility to ensure that there is a run loop running on the thread on which the location manager object is allocated. In particular, creating location managers in arbitrary dispatch queues (not attached to the main queue) is not supported and will result in callbacks not being received.
포 지 셔 닝 관리자 가 주 스 레 드 가 아 닌 하위 스 레 드 에 만 듭 니 다.개발 중 포 지 셔 닝 관리자 가 있 는 스 레 드 가 실행 순환(Run loop)에 있 는 지 확인 해 야 합 니 다.실제 개발 에서 하위 스 레 드 에 포 지 셔 닝 관리 자 를 만 들 면 리 셋 정 보 를 받 지 못 할 수도 있 습 니 다.
해결 과정
나 는 오랫동안 찾 아 보 았 지만 많은 방법 을 시 도 했 지만 성과 가 없 었 다.이것 은stackoverflow 에서 찾 은 해결 방법
질문

비교적 좋 은 대답:


하지만 해 봤 지만 성과 가 없 었 다.
어 쩔 수 없어,시간 이 있 으 면 해 봐.
해결 방법:
최종 해결 방법 은 App Delegate 에서 지도 나 네 비게 이 션 등록 정보 에 관 한 것 입 니 다.
이것 은 제 네 비게 이 션 등록 코드 입 니 다.

 //      
 [BNCoreServices_Instance initServices:@"xxxxxxxxxxxx"];
 [BNCoreServices_Instance startServicesAsyn:^{
  NSLog(@"      ");
 } fail:^{
  NSLog(@"      ");
 }];
나 는 네 비게 이 션 서 비 스 를 열 때 비동기 로 열 린 다음 에 메 인 스 레 드 가 다시 열 린 결 과 를 사용 했다.
바 이 두 탐색 API 에 들 어가 면:

/**
 *     ,    ,     
 * @param SoundDelete [in]    BNSoundManagerProtocol   
 * @return     
 */
- (BOOL)startServices;

/**
 *     ,    
 *
 * @param success          success block
 * @param fail           fail block
 */
-(void)startServicesAsyn:(void (^)(void))success fail:(void (^)(void))fail;
네 비게 이 션 서 비 스 를 시작 하 는 두 가지 방법 이 있 습 니 다.
     - 하 나 는 메 인 스 레 드 에서 동기 화 되 어 차단 을 초래 할 수 있다 고 말 합 니 다.
     - 다른 하 나 는 비동기 로 열 려 결 과 를 메 인 스 레 드 로 되 돌려 줍 니 다.
이 로 그 를 인쇄 하 는 이 유 는 비동기 로 네 비게 이 션 서 비 스 를 시 작 했 기 때 문 입 니 다.
하면,만약,만약...

[BNCoreServices_Instance startServices];
위치 추적 에 대한 로그 정 보 를 출력 하지 않 습 니 다.
죄송합니다.저 는 강박 증 이 있어 서 로그 상자 가 인쇄 되 어 있 는 것 을 좋아 하지 않 습 니 다.그래서 동기 화 를 선 택 했 습 니 다.
비동기 로 불 러 오 면 스 레 드 가 막 히 지 않 습 니 다.인쇄 로그 의 영향 을 무시 하고 비동기 로 열 수 있 습 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기