2011-08-23 39 views
0

我是iPhone的編程新手,我沿着this書。 我一直在第4章授權和核心位置的例子。CLLocation可能不會響應setDistanceFilter

這裏是我到目前爲止已經編寫的代碼: WhereamiAppdelegate.h

#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(任何)中更改而沒有任何警告,並且他們也將您的應用從AppStore中取消資格,但如果您沒有問題,則不會有任何問題......如果Apple真的想要隱藏這些內容,通過在方法表上做一個for循環就可以找到它。

順便說一句,CLLocation和CLLocationManager之間的區別與您的情況無關,因爲代碼實際上運行並且執行正確的操作,所以您將正確的消息發送到正確的對象。

+0

非常豐富,謝謝。 – nikhil

相關問題