2011-11-07 6 views
3

사용자 위치를 추적하는 추가 CLLocaitonManager 인스턴스를 초기화하면 부하가 증가합니까? 또는 클래스간에 하나의 CLLocaitonManager 인스턴스를 사용해야합니까?많은 CLLocationManager 인스턴스

+0

당신의 질문을 PLZ 할 수 있습니까? –

+0

참고 : http://stackoverflow.com/questions/3614511/is-there-any-performance-penalty-for-using-multiple-cllocationmanager-instances/3614556#3614556 – Isaac

답변

6

CLLocaitonManager을 너무 많이 생성하거나 핵심 위치 서비스의 업데이트 간격을 늘리면 배터리가 심각하게 소모됩니다. 너무 많은 인스턴스를 만드는 것은 권장되지 않습니다. 이것에 대한 필요성을 보지 마라.

좋은 연습은 하나의 CLLocaitonManager을 viewController에 초기화하는 것입니다. 다른 viewController로 이동하는 경우 현재 CLLocaitonManager &의 stopUpdates가 새 viewController에서 새 관리자를 만듭니다. 이것은 하나의 패턴입니다.

또 다른 패턴은 앱 전체에서 CLLocaitonManager을 작성하여 & 앱에서 사용할 수 있도록하는 것입니다. 이것은 전역 변수와 같습니다. 그러나 일반적으로 배터리 수명을 지속적으로 소모하기 때문에이 변수의 전역 선언을 피하십시오.

기본적으로 모든 클래스가 하나의 viewController에만 속하면 CLLocaitonManager & 위치 업데이트를 하나만 만듭니다. 그렇지 않으면 각 viewController에 대해 하나를 작성하십시오.

+3

이 증거가 있습니까? 저는 항상 CLLocationManager를 사용하여 싱글 톤을 만들었지 만, 저는 항상 애플 디자이너가 API를 사용하여 여러 개의 CLLocation 관리자를 보유하고 있다고 가정합니다. (예 : didUpdateToLocation은 CLLocationManager를 지정합니다.) –

0

위치 서비스를 사용하려면 해당 장치에 특정 하드웨어가 있어야합니다. 그래서 CLLocationManager의 인스턴스가 얼마나 많이 생성되는지는 중요하지 않습니다. 일반적으로이 변수의 전역 선언은 배터리 수명을 지속적으로 소모하므로 피해야합니다. 또 다른 현명한 중지하고 언제든지 사용자 위치를 찾는 데 필요한 때마다 시작합니다.

관련 문제