compilação condicional quando executado no simulador, em oposição a um dispositivo em
-
21-08-2019 - |
Pergunta
Existe uma directiva de compilador que eu possa usar para compilar uma linha diferente de código quando targetting o simulador em oposição ao meu dispositivo. Algo como:
# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END
Editar
Solução
#if TARGET_IPHONE_SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#else
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#endif
Outras dicas
Update: (preterido / Obsoleto) Isso só funcionou por alguns anos, e não funciona mais. (10 + anos mais tarde)
Para o registro, aqui está um outro método que usos da Apple em alguns de seus Amostra oficial cupom:
#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
Para aqueles que procuram uma solução Swift moderno, o (novo) condição plataforma targetEnvironment
fornece a resposta definitiva aqui. Por exemplo:
#if targetEnvironment(simulator)
self.imagePicker.sourceType = .photoLibrary
#else
self.imagePicker.sourceType = .camera
#endif
O condição de plataforma de ambiente de destino recurso foi introduzido por sE-0190 e está disponível desde Swift 4.1 .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow