2009-05-14 19 views
26

Existe-t-il une directive de compilateur que je peux utiliser pour compiler une ligne de code différente lorsque je cible le simulateur par opposition à mon périphérique. Quelque chose comme:Compilation conditionnelle lors de l'exécution dans Simulator par opposition à un périphérique

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

EDIT

Direct link to docs.

Répondre

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

Pour mémoire, voici une autre méthode Apple utilise dans certains de leurs fonctions officielles Exemple de code:

#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 
+2

En Dans ce cas, il semble que l'exemple de code d'Apple est faux, ce code ld break s'ils ont changé d'architectures pour les périphériques (ou Mac). – ThomasW