2014-11-04 2 views
1

앱 실행 수명으로 인해 한 번만 사용자의 위치를 ​​묻고 싶습니다. 사용자가 앱을 실행할 때마다 자신의 위치 서비스를 요청합니다 (한 번만).dispatch_once로 위치 서비스 시작

dispatch_once으로 생각했습니다.

static dispatch_once_t oncePredicate; 

dispatch_once(&oncePredicate, ^{ 

    [self.locationManager startUpdatingLocation]; 
}); 

이렇게하는 것이 가장 좋습니다. 아니면 더 좋은 방법이 있을까요?

미리 감사드립니다.

+1

이 코드는 어디에 있습니까? 왜 그것이 두 번 이상 실행될 수도 있고, 부작용이 있다면 어떻게 될지 걱정됩니까? – Wain

+0

감사합니다. @Wain,이 코드는 여러 번 발생할 수 있습니다. 그리고 나는 최선의 관행에 대해 물어 본다. 부작용은 사용자를위한 위치 질문이어야한다. (그리고 나는 한 번 질문한다. 그러나 질문의 ​​타이밍은 나에게 중요하다) – gran33

답변

1

일반적으로 startUpdatingLocation 번을 여러 번 호출하는 것에 대해 걱정할 필요가 없습니다. 대신에 논리를 추가하여 적절한 경우에만 (즉 사용자에게 의미가있는 경우에만) 호출되도록 보장해야합니다.

일반적으로 이는 사용자 기본값에 일부 상태를 저장하고 startUpdatingLocation을 호출하기 전에 해당 상태를 확인하는 것을 의미합니다. 특히 사용자가 승인을 요청하는 것이 현명하고 앱이 승인 한 특정 단계에 도달 한 후에 만 ​​상태를 설정할 수 있습니다 (승인 된 경우에도 나중에 더 자주 확인해야 함). 승인 권한).