2009-07-05 7 views
6

Existe-t-il un jeton de préprocesseur unique pouvant être utilisé pour détecter un périphérique iPhone ou un simulateur lors de la génération? J'utilise actuellement:Jeton de préprocesseur intégré pour détecter la plate-forme iPhone

#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED 
    // This is an iPhone build 
#endif 

Est-ce l'approche recommandée ou existe-t-il un meilleur moyen? Je préférerais que la macro soit intégrée, c'est-à-dire définie par le compilateur et non par un fichier d'en-tête SDK que je dois inclure. Je ne suis pas préoccupé par la distinction entre les versions iPhone OS en ce moment, mais s'il y a une page de documentation Apple qui détaille toutes les macros pertinentes et quand elles sont et ne sont pas définies alors j'apprécierais un lien vers celui-ci comme ma recherche a été courte jusqu'ici.

Merci!

Répondre

8

Le fichier que vous recherchez est TargetConditionals.h, qui définit toutes les macros qui vous intéressent Vous le trouverez dans chaque version du SDK, comme le chemin suivant pour le 2.2 SDK.

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/include/TargetConditionals.h 
+0

Merci, je ne l'avais pas réalisé d'abord que TargetConditionals.h était présent dans Mac OS X, ainsi que SDKs l'iPhone SDKs. –

2

Si vous avez du code qui s'exécute sur l'iPhone et sur le bureau, vous pouvez utiliser TARGET_OS_IPHONE pour déterminer si le système d'exploitation cible est une version de l'iPhone OS. Il y a aussi TARGET_IPHONE_SIMULATOR, qui est défini uniquement lorsque l'application est construite pour le simulateur. Ils sont toujours définis dans les fichiers d'en-tête, mais j'espère que ça aide!

13

de this site nous constatons que vous avez besoin TARGET_OS_IPHONE

#if TARGET_OS_IPHONE 
//Do iPhone stuff 
#else 
//Do Mac stuff 
#endif 
Questions connexes