ios objective-c iphone ios-simulator compiler-directives

ios - Compilación condicional cuando se ejecuta en Simulator en lugar de en un dispositivo



objective-c iphone (3)

Para aquellos que buscan una solución Swift moderna, la (nueva) condición de plataforma targetEnvironment proporciona la respuesta definitiva aquí. Por ejemplo:

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

La función de condición de la plataforma del entorno objetivo fue introducida por SE-0190 y está disponible desde Swift 4.1 .

¿Existe una directiva de compilación que pueda usar para compilar una línea diferente de código al apuntar al simulador en lugar de a mi dispositivo? Algo como:

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

EDITAR

Enlace directo a docs.


Para el registro, aquí hay otro método que Apple utiliza en algunos de sus códigos de muestra oficiales:

#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


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