代码之家  ›  专栏  ›  技术社区  ›  Codebeef

在模拟器中运行而不是在设备上运行时进行条件编译

  •  29
  • Codebeef  · 技术社区  · 17 年前

    当目标是模拟器而不是我的设备时,有没有编译器指令可以用来编译不同的代码行?比如:

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

    编辑

    Direct link to docs.

    3 回复  |  直到 8 年前
        1
  •  53
  •   Codebeef    17 年前
    #if TARGET_IPHONE_SIMULATOR
    [self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    #else
    [self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
    #endif
    
        2
  •  11
  •   Elliot    17 年前

    作为记录,苹果在一些官方示例代码中使用了另一种方法:

    #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
    
        3
  •  2
  •   Paulo Mattos    8 年前

    对于那些寻求现代快速解决方案的人来说,(新)平台条件 targetEnvironment 这里提供了明确的答案。例如:

    #if targetEnvironment(simulator)
    self.imagePicker.sourceType = .photoLibrary
    #else
    self.imagePicker.sourceType = .camera
    #endif 
    

    这个 目标环境平台条件 功能由 SE-0190 从那以后就有了 斯威夫特4.1 .

    推荐文章