2011-08-23 4 views
0

저는 iPhone 프로그래밍에 초보자입니다. this 책을 팔로우하고 있습니다. 4 장, 위임 및 코어 위치의 예제를 살펴 보았습니다. WhereamiAppdelegate.hCLLocation이 setDistanceFilter에 응답하지 않을 수 있습니다.

#import <UIKit/UIKit.h> 
    #import <CoreLocation/CoreLocation.h> 

    @interface WhereamiAppDelegate : NSObject <UIApplicationDelegate, CLLocationManagerDelegate> { 
     UIWindow *window; 
     CLLocation *locationManager; 

    } 

    @property (nonatomic, retain) IBOutlet UIWindow *window; 

    @end 

을 그리고 여기에 구현 파일입니다 :

여기에 지금까지 작성한 코드의 난 단지 내가 변경 한 내용을 포함했다. 전체 파일은 here입니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
     // Create location manager. 
     locationManager = [[CLLocation alloc] init]; 
     [locationManager setDelegate:self]; 
     [locationManager setDistanceFilter:kCLDistanceFilterNone]; 
     [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
     [locationManager startUpdatingLocation]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

- (void)dealloc 
{ 
    [locationManager setDelegate:nil]; 
    [_window release]; 
    [super dealloc]; 
} 

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    NSLog(@"%@",newLocation); 
} 

- (void)locationManager:(CLLocationManager *)manager 
     didFailWithError:(NSError *)error 
{ 
    NSLog(@"Couldn't find loaction %@",error); 
} 

XCode는 CLLocation이 setDistanceFilter 및 기타 유사한 경고에 응답하지 않을 수 있다고 경고합니다. 나는 여기서 단서가 없다, 나는 책 선을 따라 선을 따라 갔다. 필자는 필요한 프로토콜을 구현하지 않았다고 생각합니다. 누군가 내가 뭘 잘못하고 어떻게 진행해야하는지 말해 줄 수 있습니까?

답변

5

클래스 CLLocationCLLocationManager과 같지 않습니다. 전자는 한 위치를 나타내고 후자는 응용 프로그램의 위치 업데이트 구성을 처리하는 관리자 클래스입니다.

+0

정말 고마워요. 생명의 은인입니다. – nikhil

1

setDistanceFilter :는 시스템 API의 문서화되지 않은 부분입니다. 그것들은 iOS (any)의 차후 버전에서 경고없이 변경 될 수 있으며 AppStore에서 앱이 자격을 박탈 당할 수도 있습니다.하지만 문제가 없다면 아무 문제도 없을 것입니다. Apple이 실제로 이러한 것을 숨기려면 메소드 테이블에서 for-loop를 작성하면 찾을 수 없습니다.

실제로 CLLocation과 CLLocationManager의 차이는 코드가 실제로 실행되고 올바른 작업을 수행하기 때문에 상황과 관련이 없으므로 올바른 메시지를 올바른 개체로 보냈습니다.

+0

매우 유익한, 감사합니다. – nikhil

관련 문제