if targetEnvironment(simulator) 'return' 之后的代码将永远不会被执行

if targetEnvironment(simulator) Code after 'return' will never be executed

提问人:Bob de Graaf 提问时间:10/21/2023 更新时间:10/23/2023 访问量:26

问:

当我使用它时,我收到 Xcode 警告:“'return'之后的代码将永远不会被执行”:

#if targetEnvironment(simulator)
    return
#endif

//Stuff that a simulator is unable to do

每当模拟器真的无法执行某些操作时,例如扫描 NFC 代码,我都会在我的代码中使用它。简单的解决方案是使用 #else,但我不喜欢将代码放在 #else 中,因为 Xcode 没有意识到代码在它不是模拟器时运行。但也许更好的论点是,当我使用 #else 时,#else 中的所有代码都被 Xcode 灰显了。

有没有办法让 Xcode 意识到代码是可以执行的?或者以某种方式禁止显示此警告(不禁止显示此文件中的所有警告)?

swift xcode ios-simulator 编译器-warnings

评论


答:

1赞 HangarRash 10/21/2023 #1

您可以让 Xcode 意识到可以使用 来执行代码。正如你所说,这是简单的解决方案。这也是正确的解决方案。#else

您声明:

我不喜欢将代码放在 #else 中,因为 Xcode 没有意识到代码在它不是模拟器时会运行。

事实并非如此。Xcode 确实意识到了这一点。这就是它所做的事情的全部意义所在。上面的代码或下面的代码将灰显,具体取决于您当前的构建目标。选择一个真实设备,它将变灰,表示它不会被使用。选择一个模拟器,其他代码将显示为灰色,表示不会使用它。#else#elsereturn

换言之,Xcode 会根据所选的构建目标将它知道当前不会使用的代码变灰。您希望此行为能够知道哪些代码当前处于活动状态。它避免了对当前正在构建和运行的代码的任何混淆。


话虽如此,Xcode 确实提供了一个允许您禁用此功能的设置。调出 Xcode 设置并转到“文本编辑”选项卡。启用或禁用“调暗非活动代码”选项,具体取决于您是否希望 Xcode 将相关代码变灰。

评论

0赞 HangarRash 10/22/2023
无需更改生成目标即可查看或编辑代码。灰显的代码仍然可见且可编辑。尽管灰色代码中没有代码完成,但这确实使编辑变得更加困难。
0赞 Bob de Graaf 10/22/2023
在没有完成的情况下肯定更难编辑,而且与非灰色代码相比,看起来也更烦人
1赞 Bob de Graaf 10/23/2023
啊,我找到了最后一部分。Xcode 在“设置”-“文本编辑”-“显示”>“>”显示“中有一个”调暗非活动代码“选项。如果关闭此功能,代码将与任何其他代码一样可见,并且代码完成将再次起作用!:)