什么是弃用的?如何在所有版本中处理它?

时间:2014-10-30 06:13:00

标签: ios objective-c xcode gps core-location

我正在使用核心位置我的开发目标是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管理两个单独的委托方法?

如果不是,请详细解释我。

2 个答案:

答案 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