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];
위치 추적 에 대한 로그 정 보 를 출력 하지 않 습 니 다.죄송합니다.저 는 강박 증 이 있어 서 로그 상자 가 인쇄 되 어 있 는 것 을 좋아 하지 않 습 니 다.그래서 동기 화 를 선 택 했 습 니 다.
비동기 로 불 러 오 면 스 레 드 가 막 히 지 않 습 니 다.인쇄 로그 의 영향 을 무시 하고 비동기 로 열 수 있 습 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.