2014-03-28 5 views
1

저는 iOS 프로그래밍에 익숙하지 않고 사용자 위치에 따라 작업을 수행 할 연습용 앱을 작성합니다. 내가하고 싶은 무엇iOS에서 현재 위치를 가져 오는 정적 방법

그래서 그것이 보편적으로 호출 할 수 있습니다

+(CLLocation *) getCurrentLocation; 

같은 MyLocationManager 래퍼 간단한 정적 기능을 가진 클래스, 뭔가를하는 것입니다. 그러나 일반적으로 위치를 검색하는 방법은 성공/실패 처리기가있는 CLLocationManagerDelegate 인터페이스를 구현하는 것이고 일반적으로 코드는 컨트롤러에 배치됩니다.

필자가 언급 한 것과 같은 중앙 집중식 유틸리티 클래스를 만들 수있는 방법이 있는지 궁금하고 많은 컨트롤러에 존재하지 않아도 위치 코드를 멋지게 검색 할 수 있을까요?

답변

1

IMO, 당신이 보관하고 싶은 것은 모범 사례가 아닙니다. 이 경우 가장 복잡한 방법은 블록을 완료 핸들러로 사용하는 것입니다. delegation를 사용하는 방법을

두 번째 방법, 그것은이

@implementation YourController 

-(void)updateLocationAndDoSomething 
{ 
    [Utilities startUpdateLocationWithCompletionHandler:^(CLLocationCoordinate2D location, BOOL *successed){ 
     //your custom code here 
    }]; 
} 
@end 

모양을 여기 경우 블록 http://www.appcoda.com/objective-c-blocks-tutorial/에 대한 튜토리얼을 이해하기 쉽게 당신이 모르는, 컨트롤러는이

과 같이 표시됩니다
@implementation YourController 

-(void)gotLocationAndDoSomething:(CLLocationCoordinate2D) location 
{ 
    //your custom code here 
} 

-(void)failedToGetLocation 
{ 

} 
@end 

하나의 유틸리티 클래스에 모든 요소를 ​​넣으려고하면 어쩌면 가능할 수도 있지만 유지가 어려울 수 있습니다.

0

이상적인 방법은 아니지만, 지금은 appDelgate에 변수를 저장하고 필요할 때 언제든지 가져올 수 있습니다.

두 번 이상 함수를 호출해야한다면 yes를 Utils 클래스에 추가하고 모든 유틸리티/다른 메소드를 입력하십시오.

필요한 곳에 클래스를 포함시키고 위치를 얻으십시오.

관련 문제