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
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