我正在使用核心位置我的开发目标是5.0以下是我开始更新的代码
self.locationManager = [[CLLocationManager alloc]init];
[self.locationManager setDelegate:self];
[self.locationManager startUpdatingLocation];
以下是委托方法
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
// Do Something Here
}
它在iOS 5.0和6.0中调用,但在iOS 7.0中已被弃用 所以对于iOS 7.0及以上版本,我必须使用下面的
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
// Do Something Here
}
我的问题是,我是否必须为低于7.0及高于7.0的iOS管理两个单独的委托方法?
如果不是,请详细解释我。
答案 0 :(得分:1)
请在此处阅读本文档 -
要使其与iOS 5兼容,请在此功能中调用该方法的较新版本
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
http://www.devfright.com/how-to-make-didupdatelocations-compatible-with-ios-5-and-ios-6/
答案 1 :(得分:0)
将您的开发目标设置为iOS 5.0。如果是这种情况,则不会出现这些警告。您可以使用已弃用的委托,因为正在使用的编译器不了解弃用。现在可能存在需要在未来的项目中包含此源代码的情况。这些项目可能仅支持iOS7及更高版本。如果是这种情况,那么与代表一起工作以避免出现问题总是安全的。
您也可以使用#pragma
关闭警告,如下所示:
// pre-iOS6.0
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
[self dismissModalViewControllerAnimated:YES];
#pragma clang diagnostic pop
有关详细信息,请查看此帖:deprecated warnings in xcode and how to handle deprecation