判断当前设备是模拟器还是真机

1,531 阅读1分钟

在日常开发中,有些代码只想在模拟器中运行,或者只想在非模拟器中运行,这时候需要用条件编译来判断当前环境是否为模拟器。

如果你希望某些代码仅在 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新知”,每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!