禁止 Xcode 中的 `deprecated` 警告
Posted
技术标签:
【中文标题】禁止 Xcode 中的 `deprecated` 警告【英文标题】:Suppress `deprecated` warnings in Xcode 【发布时间】:2014-05-20 10:19:06 【问题描述】:dismissModalViewControllerAnimated
已弃用:首先在 ios
6.0 中弃用
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` 警告的主要内容,如果未能解决你的问题,请参考以下文章