2013-07-23 28 views
1

我正在使用CoreLocation Framework獲取我的項目中的經度和緯度。didUpdateLocations委託方法不在iOS 5.1和更早版本中調用

我在我的.m文件執行此委託方法

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 

    NSLog(@"Locations : %@", locations); 
} 

但在安裝iOS 5.0 & 5.1,此方法不調用。 ,並在iOS 6.0或更高版本中調用正確。 所以如何在iOS 5.0或更高版本中調用此方法。

+0

重複的問題http://stackoverflow.com/questions/12602463/didupdatelocations-instead-of-didupdatetolocation – Tirth

回答

2

didUpdateLocations:在ios 5或更早版本中不存在。如果你想支持這些ios版本,那麼只需使用已棄用的didUpdateToLocation:fromLocation即可。即使它已被棄用,它仍然可以在iOS 6和7上運行。這是最簡單的解決方案。

您可以爲這兩種方法分配委託方法,但管理起來會更復雜。如果您不需要在後臺創建跟蹤日誌,那麼您並不需要didUpdateLocations:它是爲了在後臺運行時收集多個點時節省電池電量而創建的。

+0

謝謝:)這是很好的信息 –

0

查看此答案...適用於iOS 5(不推薦使用iOS 6)和舊版本的此方法。

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 

這種方法適用於iOS 6版及更高版本..

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations 
0
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 

上述委託方法是在IOS 6.棄用

取而代之的是,可使用:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations 

此代碼(以及pausesLocationUpdatesAutomatically)將只編譯XCode中4.5(其中基礎SDK是6)。

如果你想前6.0瞄準的iOS版本,然後用這個宏

#define IOS_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 

而且無論你正在創建的CLLocationManager對象

if(IOS_VERSION_GREATER_THAN_OR_EQUAL_TO (@"6.0")) 
{ 
    locationManagerObj.pausesLocationUpdatesAutomatically = NO; 
} 

更多細節在這裏:

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

+0

棄用並不意味着它不存在。它仍然在那裏,仍然有效。已棄用意味着它將在未來版本中消失。 – progrmr

+0

@progrmr:你錯了。我寫道,爲了說明,如果我們使用委託方法,這不是正確的方法。我的代碼可以工作,但只是由於我的英語不好,你低估了我的答案,我認爲它不公平。 –

+0

由於檢查版本號不是推薦的方法來檢查哪些功能可用,因此我選擇了低投注。相反,檢查一個對象是否爲respondsToSelector通常會更好。 – progrmr

相關問題