当我使用这个时,我收到 Xcode 警告:“‘return’之后的代码将永远不会被执行”:
#if targetEnvironment(simulator)
return
#endif
//Stuff that a simulator is unable to do
每当模拟器确实无法执行某些操作(例如扫描 NFC 代码)时,我就会在代码中使用它。简单的解决方案是使用 #else,但我不喜欢将代码放在 #else 中,只是因为 Xcode 没有意识到代码在不是模拟器时会运行。但也许更好的论点是,当我使用 #else 时,#else 中的所有代码都会被 Xcode 变灰。 有没有办法让Xcode意识到代码
可以被执行?或者以某种方式抑制此警告(而不抑制此文件中的所有警告)?
#else
来执行。正如你所说,这是一个简单的解决方案。这也是正确的解决方案。
您说:我不喜欢将代码放在 #else 中,只是因为 Xcode 没有意识到代码在不是模拟器时会运行。
确实这不是真的。 Xcode
意识到了。这就是它正在做的事情的全部意义。根据您当前的构建目标,#else
上方的代码或
#else
下方的代码将变灰。选择真实设备,return
会变灰,表示不会使用。选择一个模拟器,其他代码会变灰,表示不会使用。换句话说,Xcode 根据所选的构建目标将其知道当前不会使用的代码灰显。您需要这种行为,以便知道哪些代码当前处于活动状态。它可以避免对您当前正在构建和运行的代码产生任何混淆。