
在日常开发中,有些代码只想在模拟器中运行,或者只想在非模拟器中运行,这时候需要用条件编译来判断当前环境是否为模拟器。
如果你希望某些代码仅在 iOS 模拟器/真机中运行,则可以使用以下代码:
#if targetEnvironment(simulator)
print("当前设备为模拟器,这里的代码仅在模拟器下运行")
#else
print("当前设备为真机,这里的代码仅在真机下运行")
#endif
有了这个判断,就可以针对模拟器来做一些特殊操作,比如在你的登录页面,需要账号密码登录,模拟器下可以直接填充账号密码,无需每次手动输入:
#if targetEnvironment(simulator)
self.nameInput.text = "your account"
self.passwordInput.text = "your password"
#else
print("当前设备为真机,这里的代码仅在真机下运行")
#endif
另一个比较有用的例子是,如果你有个功能是拍照,但是模拟器不支持摄像头,就可以在模拟器下直接生成一个静态图片,而真机下则正常使用设备摄像头:
func takePhoto() {
#if targetEnvironment(simulator)
// 当前在模拟器上运行,使用一张静态图片
if let img = UIImage(named: "sample") {
processPhoto(img)
} else {
fatalError("Sample image failed to load")
}
#else
// 当前在真机上运行,使用相机拍照
let picker = UIImagePickerController()
picker.sourceType = .camera
vc.allowsEditing = true
picker.delegate = self
present(picker, animated: true)
#endif
}
点击下方公众号卡片,关注我,每天分享一个关于 iOS 的新知识
本文同步自微信公众号 “iOS新知”,每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!