如何判断 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(