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

问题描述 投票:0回答:1

当我使用这个时,我收到 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 compiler-warnings
1个回答
0
投票
#else

来执行。正如你所说,这是一个简单的解决方案。这也是正确的解决方案。

您说:

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

这不是真的。 Xcode
确实

意识到了。这就是它正在做的事情的全部意义。根据您当前的构建目标,#else上方的代码或

#else
下方的代码将变灰。选择真实设备,
return
会变灰,表示不会使用。选择一个模拟器,其他代码会变灰,表示不会使用。
换句话说,Xcode 根据所选的构建目标将其知道当前不会使用的代码灰显。您需要这种行为,以便知道哪些代码当前处于活动状态。它可以避免对您当前正在构建和运行的代码产生任何混淆。

© www.soinside.com 2019 - 2024. All rights reserved.