Avatar ·

如何判断 Swift 应用是为模拟器还是真机编译的

大家好!我是 iOS 开发新手,遇到了一个问题。 我的应用中有与摄像头和通讯录访问相关的功能。在真机上一切正常,但当我在 Xcode 模拟器(例如 iPhone 15 Pro)中运行项目时,应用会崩溃并报错,因为模拟器不支持摄像头。我想在代码中添加检查,以便在模拟器上只显示一个占位提示,而在真机上打开摄像头。 我尝试过使用 `#if TARGET_OS_SIMULATOR`,但编译器报错说这是一个未定义的标识符。后来我找到了 `#if targetEnvironment(simulator)`,但不确定是否正确使用。我当前的代码如下: ```swift import UIKit class CameraViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() #if targetEnvironment(simulator) print("运行在模拟器上 — 摄像头不可用") showSimulatorPlaceholder(