在iOS 5.1及更早版本中,didUpdateLocations委托方法未调用

时间:2013-07-23 05:05:16

标签: iphone objective-c ios5 core-location cllocationmanager

我正在使用CoreLocation Framework获取项目中的纬度和经度。

我已在我的.m文件中实现此委托方法

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

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

但是在iOS 5.0& 5.1,这种方法不是调用。 在iOS 6.0或更高版本中,它可以正常调用。 所以如何在iOS 5.0或更高版本中调用此方法。

4 个答案:

答案 0 :(得分:2)

ios 5或更早版本中不存在

didUpdateLocations:。如果您想支持这些ios版本,请使用已弃用的didUpdateToLocation:fromLocation。即使它被弃用,它仍然适用于ios 6和7.这是最简单的解决方案。

您可以拥有两者的委托方法,但管理起来会变得更加复杂。如果您不需要在后台构建跟踪日志,那么您实际上并不需要didUpdateLocations:创建它以节省电池电量,同时在后台运行时收集多个点。

答案 1 :(得分:0)

请参阅此答案...此方法适用于iOS 5(在iOS 6上已弃用)和旧版本。

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

适用于iOS 6及更高版本的此方法..

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

答案 2 :(得分:0)

参见:

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManagerDelegate_Protocol/CLLocationManagerDelegate/CLLocationManagerDelegate.html

正如您所看到的,locationManager:didUpdateLocations:仅在iOS 6.0及更晚版本中可用。

您始终可以从

获取最近更新的位置
CLLocationManger's location 

属性。

答案 3 :(得分: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