在Xcode中禁止显示“已弃用”的警告

7

dismissModalViewControllerAnimated已被弃用:首次在 6.0中被弃用

  • 我的部署目标是6.1,Xcode是5.1。
  • 我想为6.1模拟器删除此警告。这可能吗????
  • 如果我在ios 5.1中进行选择运行,则没有警告。

可能是重复问题 ---> https://dev59.com/W2cs5IYBdhLWcg3w-YlD - Maverick
可能是在Xcode中抑制已弃用警告的重复问题。 - mylogon
4个回答

33

如果我理解正确,你只想抑制警告。

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

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

编辑:若要抑制调用警告的特定代码,请使用:

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

    [self dismissModalViewControllerAnimated:YES];

#pragma clang diagnostic pop

谢谢你的回答。有没有办法隐藏特定警告?我不想在那个VC中抑制所有警告。 - Jayaprada
请参见更新的代码。除非您的部署目标小于5.0,否则建议使用较新的方法。它们自iOS 5.x版本以来就可用。 - n00bProgrammer
1
谢谢 n00bProgrammer :) - Jayaprada
1
谢谢,伙计。干得好。 - Felipe
太棒了!我一直在寻找这个。 - jestro
显示剩余5条评论

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 和 Objective-C 版本检查(iOS 8以上)


1
使用。
[self presentViewController:loginController animated:YES completion:nil];

或者

[self presentModalViewController:loginController animated:YES];

or

[self dismissViewControllerAnimated:NO completion:nil];

0

使用以下代码,它完美地工作:

[self dismissViewControllerAnimated:YES completion:nil];

已测试并正常工作。

:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接