在Simulator中运行时的条件编译,而不是在设备上运行

时间:2009-05-14 18:23:51

标签: ios objective-c iphone ios-simulator compiler-directives

我是否有一个编译器指令可用于在定位模拟器而不是我的设备时编译不同的代码行。类似的东西:

# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END

修改

Direct link to docs.

3 个答案:

答案 0 :(得分:54)

#if TARGET_IPHONE_SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#else
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#endif

答案 1 :(得分:11)

更新:(已弃用/已过时)这只能使用几年,而且不再有效。 (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

答案 2 :(得分:5)

对于那些寻求现代Swift解决方案的人来说,(新)平台条件return ( <div> <div dangerouslySetInnerHTML={{ __html: this.state.result }} /> </div> ); 在这里提供了明确的答案。例如:

targetEnvironment

目标环境平台条件功能由SE-0190引入,自 Swift 4.1 起可用。