在Xcode中抑制“已弃用”警告

时间:2014-05-20 10:19:07

标签: xcode

不推荐使用

dismissModalViewControllerAnimated:首先在iOS 6.0

中弃用
  • 我的部署目标是6.1,Xcode是5.1。
  • 我想删除6.1模拟器的警告。这可能是?????
  • 如果我在ios 5.1中通过选择运行它,那么就没有警告。

4 个答案:

答案 0 :(得分:28)

如果我是对的,你只想抑制警告。

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

这只是为了抑制警告。在发布版本中,您不应使用任何已弃用的函数。

编辑:要取消调用警告的特定代码,请使用:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

    [self dismissModalViewControllerAnimated:YES];

#pragma clang diagnostic pop

答案 1 :(得分:2)

@ n00bProgrammer感谢您的回答。

对于我们这些仍然拥有支持早期版本iOS的代码的人来说,我处理这些旧代码的方法是将旧代码包装在版本宏测试中,以及抑制导致的编译器警告。

请注意,有时不推荐使用的商品会生成隐式转化警告,需要使用“-Wconversion”进行抑制。

    if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {
        #pragma clang diagnostic push
        #pragma clang diagnostic ignored "-Wdeprecated-declarations"
        #pragma clang diagnostic ignored "-Wconversion"
        [controlCenter.label setLineBreakMode:UILineBreakModeWordWrap];
        #pragma clang diagnostic pop
    } else {
        [controlCenter.label setLineBreakMode:NSLineBreakByWordWrapping];
    }

您可以在此处找到旧版Objective-C代码的版本检查器:SYSTEM_VERSION_LESS_THAN()

您可以在此处找到新的Swift和Objective-C代码的版本检查器:Swift and Objective-C version check past iOS 8

答案 2 :(得分:1)

使用

[self presentViewController:loginController animated:YES completion:nil];

[self presentModalViewController:loginController animated:YES];

[self dismissViewControllerAnimated:NO completion:nil];

答案 3 :(得分:0)

使用以下代码,它完美无缺

[self dismissViewControllerAnimated:YES completion:nil];

经过测试并正常工作。

:)

相关问题