微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – xcode中已弃用的警告以及如何处理弃用

if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
     {[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];} //post-iOS6.0
else {[self dismissModalViewControllerAnimated:YES];} //pre-iOS6.0

我正在对选择器(上面)代码做出响应,以处理不赞成使用的方法.这样我的应用程序与旧版本的iOS兼容,但是我在代码中收到警告:“”dismissModalViewControllerAnimated:“已被弃用:在iOS 6.0中首先被弃用”
我个人不喜欢我的代码中的任何警告,但更重要的是,我读到某处,苹果会抱怨你的代码中的警告.

1)Apple会在你的代码中抱怨警告吗?

我是否正确处理弃用的方法

3)有没有办法将弃用的方法方法警告关闭

解决方法

> Apple不知道您的代码中收到的任何编译时警告.
是的,你正在正确地处理这个做法.显然,在这种情况下,如果您在5.0之前支持iOS,则只需要完成这项工作.但是,一般来说,用于测试方法是否可以被调用,然后调用适当的再现的技术是绝对正确的.
>如果要关闭警告,您只需暂时禁止警告,然后使用适当的#pragma语法将其重新打开:
if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
{
    //post-iOS6.0
    [self dismissViewControllerAnimated:YES completion:nil];
} 
else
{
    // pre-iOS6.0
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    [self dismissModalViewControllerAnimated:YES];
#pragma clang diagnostic pop
}

顺便说一句,如果您想知道-W代码是针对特定警告的,请转到Log Navigator,选择包含警告的最近版本,然后展开日志,您将看到它:

还要注意,虽然你可以按照上面的说明来抑制警告,但实际上你很少需要这样做.使用你的例子,如果你的项目的iOS部署目标是4.3,你不会得到警告.如果您的部署目标是6.0或更高版本,那么您会得到该警告,但是再次,您可能不需要这个条件代码调用dismissModalViewControllerAnimated,因为有效的iOS 5.0,您可以随时使用dismissViewControllerAnimated.

您需要在代码禁止此警告的唯一时间是,如果您有源代码,将包含在将来的项目中,您不知道部署目标是什么.使用您的示例,如果您不知道上述代码是否将包含在具有4.3部署目标或5.0部署目标的项目中.在这种情况下,这种语法是非常有用的.但是,再次,我也可以对__IPHONE_OS_VERSION_MIN_required使用条件检查,例如:

#if __IPHONE_OS_VERSION_MIN_required < __IPHONE_5_0
    if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
    {
        //post-iOS5.0
        [self dismissViewControllerAnimated:YES completion:nil];
    }
    else
    {
        // pre-iOS5.0
        [self dismissModalViewControllerAnimated:YES];
    }
#else
    [self dismissViewControllerAnimated:YES completion:nil];
#endif

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐