如何解决Xcode中targetEnvironment(simulator)返回后的代码不可执行警告?
解决Xcode中
#if targetEnvironment(simulator)搭配return后的代码不可执行警告 方法一:单独抑制特定警告
针对触发警告的代码段,用Clang编译指令临时禁用-Wunreachable-code警告,既不会影响文件其他代码的警告检测,后续真机逻辑代码也不会被置灰:
#if targetEnvironment(simulator) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunreachable-code" return #pragma clang diagnostic pop #endif // 此处编写NFC扫描等真机专属代码,不会被Xcode置灰
#pragma clang diagnostic push:保存当前警告配置#pragma clang diagnostic ignored "-Wunreachable-code":临时忽略“代码不可达”警告#pragma clang diagnostic pop:恢复原有警告配置
方法二:调整逻辑避免直接return(或关闭置灰效果)
如果不想用编译指令,可调整模拟器分支的逻辑,或者关闭Xcode的代码置灰功能:
- 调整逻辑写法:把模拟器分支的
return替换为空实现或提示,让Xcode识别后续代码在真机环境下可达:
#if targetEnvironment(simulator) print("NFC功能仅支持真机环境") // 此处通过其他方式终止当前逻辑(比如提前退出函数分支) #else // 真机NFC扫描代码 #endif
- 关闭代码置灰:如果只是反感#else分支下的代码被置灰,可在Xcode中关闭该功能:
- 打开Xcode偏好设置(Preferences)
- 进入
Text Editing->Code folding - 取消勾选
Dim Inactive Code
这样即使使用#else,真机代码也不会被置灰,同时Xcode也不会触发不可达代码警告。
内容的提问来源于stack exchange,提问作者Bob de Graaf
相关产品推荐
相关产品推荐

