iOS 개발 시작 후 발생한 문제
_locationManager = [[CLLocationManager alloc]init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[_locationManager startUpdatingLocation];
당신의view Controller가 CLLocation Manager Delegate 프록시를 실현하면 됩니다. 그리고 프록시 방법을 통해 사용자의 현재 위치를 즐겁게 얻을 수 있습니다.
- (void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *lastLocation = [locations lastObject];
CLLocationCoordinate2D coordinate =lastLocation.coordinate;
_latitude = coordinate.latitude;
_longitude = coordinate.longitude;
[manager stopUpdatingLocation];
}
그리고 얻은 경위도 포스터를 백스테이지에 주시면 됩니다!
설마 정말 이렇게 간단하게 OK인가요?물론 아니지.제가 최근에 한 프로젝트에서 이런 위치 정보가 필요합니다. 그리고 위치 정보에 따라 근처 사용자의 목록을 얻을 수 있습니다. 이론적으로 이렇게 하면 절대 문제가 없지만 실제 프로젝트에서 이상한 문제가 발생할 수 있습니다.무슨 문제예요?요청된 데이터 중복
백그라운드 인원과 토론도 했고 인터페이스도 테스트했다. 물론 인터페이스의 문제가 아니었다. 그리고 나는 끊어서 문제를 찾기 시작했다. 도대체 어디에 오류가 발생했는지. 인터넷 요청 방법은 분명히 한 번만 사용했지만 얻은 데이터가 인터페이스에 나타난 것은 실제 데이터의 2배였다.
곧 문제를 찾았어요. 위의 그 대리 방법이 두 번이나 갔기 때문이에요!내가 인터넷에서 요청한 코드는 이 프록시 방법에 쓰면 틀림없이 두 번 요청할 거야. 데이터가 중복되지 않아야 착해.BUT [manager stopUpdatingLocation];이 코드가 위치 추적을 정지시켰잖아요. 어떻게 프록시 방법을 두 번이나 가요?많은 자료를 조사한 끝에 마침내 알아냈다.
원래는 포지셔닝을 처음 사용할 때 먼저 에이전트 방법을 사용하여 대략적인 현재 위치로 돌아왔다. 포지셔닝을 멈추게 했지만 실제로는 멈추지 않았다. 두 번째로 정확한 위치로 돌아간 후에야 멈추었다.문제가 마침내 명백해졌기 때문에 쉽게 해결할 수 있다. 표지판을 붙여라isLoc, 판단을 통해isLoc의 값 제어 프록시 방법 중의 네트워크 요청은 한 번만 요청합니다. OK 해결되었습니다!
프로젝트를 개발할 때 항상 각종 문제가 발생하고 자신의 문제를 공유하며 다음에 여러분들이 이 문제에 부딪히면 시행착오를 줄일 수 있기를 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
사전(NSDictionary)과 JSON 문자열(NSString) 간 상호 회전자전 Json 문자열 JSON 문자열을 사전으로 변환...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.