当针对模拟器而不是我的设备时,是否有一个编译器指令可以用来编译不同的代码行。就像是:
# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END
编辑
当针对模拟器而不是我的设备时,是否有一个编译器指令可以用来编译不同的代码行。就像是:
# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END
编辑
#if TARGET_IPHONE_SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#else
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#endif
更新:(已弃用/过时)这只工作了几年,不再工作了。(10 多年后)
作为记录,这是 Apple 在其一些官方示例代码中使用的另一种方法:
#if TARGET_CPU_ARM
// Only executes on an iPhone or iPod touch device
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#else
// Only executes on the Simulator
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#endif
对于那些寻找现代 Swift 解决方案的人来说,(新的)平台条件targetEnvironment
在这里提供了明确的答案。例如:
#if targetEnvironment(simulator)
self.imagePicker.sourceType = .photoLibrary
#else
self.imagePicker.sourceType = .camera
#endif
目标环境平台条件功能由SE-0190引入,自Swift 4.1起可用。