Bedingte Kompilierung, wenn in Simulator läuft im Gegensatz zu auf einem Gerät
-
21-08-2019 - |
Frage
Gibt es eine Compiler-Direktive ich verwenden kann, eine andere Zeile Code zu kompilieren, wenn der Simulator Targeting als mein Gerät gegenüber. So etwas wie:
# IF SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
# ELSE
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
# END
EDIT
Lösung
#if TARGET_IPHONE_SIMULATOR
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
#else
[self.imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
#endif
Andere Tipps
Update: (Veraltete / Obsolete) Dies ist nur für ein paar Jahre gearbeitet, und funktioniert nicht mehr. (10+ Jahre später)
Für die Aufzeichnung ist hier eine andere Methode, die Apple in einigen ihrer offiziellen Beispielcode verwendet:
#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
Für diejenigen, für eine moderne Swift Lösung suchen, die (neue) -Plattform Bedingung targetEnvironment
bietet die definitive Antwort hier. Zum Beispiel:
#if targetEnvironment(simulator)
self.imagePicker.sourceType = .photoLibrary
#else
self.imagePicker.sourceType = .camera
#endif
Die Zielumgebung Plattform Bedingung Feature wurde von SE-0190 und ist seit Swift 4.1 .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow