禁止 Xcode 中的 `deprecated` 警告

Posted

技术标签:

【中文标题】禁止 Xcode 中的 `deprecated` 警告【英文标题】:Suppress `deprecated` warnings in Xcode 【发布时间】:2014-05-20 10:19:06 【问题描述】:

dismissModalViewControllerAnimated 已弃用:首先在 ios 6.0 中弃用

我的部署目标是 6.1,Xcode 是 5.1。 我想删除 6.1 模拟器的这个警告。这可能吗????? 如果我在 ios 5.1 中通过选择运行它,则不会发出警告。

【问题讨论】:

可能重复 ---> ***.com/questions/12445190/… Suppressing deprecated warnings in Xcode的可能重复 【参考方案1】:

如果我是正确的,您只是想抑制警告。

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"

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

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

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

    [self dismissModalViewControllerAnimated:YES];

#pragma clang diagnostic pop

【讨论】:

最好用新代码替换已弃用的代码而不是压制,只需将行替换为:[self dismissViewControllerAnimated:NO completion:nil];。这是更好的选择。 感谢您的回答。是否有任何解决方案可以隐藏该特定警告的警告。我不想禁止该 VC 中的所有警告。 查看更新的代码。此外,除非您的部署目标 感谢 n00bProgrammer :) 谢谢,伙计。干得好。【参考方案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

【讨论】:

【参考方案3】:

使用

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

[self presentModalViewController:loginController animated:YES];

[self dismissViewControllerAnimated:NO completion:nil];

【讨论】:

【参考方案4】:

因此使用以下代码可以完美运行

[self dismissViewControllerAnimated:YES completion:nil];

经过测试,工作正常。

:)

【讨论】:

以上是关于禁止 Xcode 中的 `deprecated` 警告的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 - 配置文件与配置文件(已弃用)

如何在 Xcode 中弃用方法

添加 CoreData 模型显示“Deprecated Feature: Transient Inverse”警告

C++ 一种禁止方法被使用的宏

C++ 一种禁止方法被使用的宏

C++ 一种禁止成员方法被使用的宏