项目设置建议编译器警告:"Suspicious Moves"

Project Settings Recommends Compiler Warning: "Suspicious Moves"

在一个 Xcode 项目中,我收到一个奇怪的警告。它是什么,它是坏事吗?

这是警告:

Project 'Little Hoot' - Enable Recommended Warning This will enable the following recommended compiler warning:

还建议我也更新了另一个设置。

Target 'Little Hoot' - Update C++ Standard Library The 'libstdc++' C++ Standard Library is deprecated. This will update the setting for Target 'Little Hoot' to 'Compiler Default', which is the recommended value.

我在网上看过,但至少找不到第一个警告的答案。

我最近在设置新项目时也从 Xcode 那里收到了这条消息。我的步骤是从文件中删除引用(例如 Info.plist),直接在 Finder 上创建文件夹,然后将文件添加回 Xcode。我想这是一项安全功能,但如果你的情况像我的情况,那只是一个警告。

这两个警告都是指您的项目中的设置未反映建议的默认值。它们可能都是在您升级 Xcode 版本或将旧项目导入更高版本的 Xcode 后触发的。

除非您有充分的理由不这样做,否则最好遵循建议。最简单的方法是单击警告旁边的黄色三角形并允许 Xcode 对设置进行适当的更改。

"Suspicious Moves" Project/Target 设置似乎控制 -Wmove 编译器警告选项 LLVM/Clang,这是一组 3 个其他警告选项:-Wpessimizing-move , -Wredundant-move-Wself-move.

这些选项会生成这些警告:

warning: moving a temporary object prevents copy elision
warning: moving a local object in a return statement prevents copy elision
warning: redundant move in return statement
warning: explicitly moving variable of type A to itself

(来自 http://clang.llvm.org/docs/DiagnosticsReference.html 的 Clang 文档)

因此,无论您是接受建议并启用警告还是不启用警告,都可能没什么大不了的。如果你用那些可疑的动作让事情变慢,你就不会被告知。

除了迂腐的警告、未使用的参数和自动合成的属性外,您应该打开所有警告;这三个警告警告了大量的好代码。与静态分析器警告相同。

然后您查看收到的警告并修复它们。如果您以前没有这样做过,那么我估计所有警告中有 20-40% 是代码中的实际错误。

你将能够see warning detail in issue navigator section。您可以通过选择问题来修复它。这将显示一个警告,指出需要在项目设置中完成的更改。

单击“执行更改”按钮。这将对项目设置进行必要的更改,从而消除此警告。