2009-07-05 8 views
6

¿Hay un solo token de preprocesador que se pueda usar para detectar cualquier dispositivo o simulador de iPhone en tiempo de compilación? Actualmente estoy usando:Token de preprocesador incorporado para detectar la plataforma de iPhone

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

¿Es este el enfoque recomendado o hay una manera mejor? Prefiero que la macro esté incorporada, es decir, definida por el compilador y no por un archivo de encabezado SDK que tengo que incluir.

No me preocupa distinguir entre las versiones de iPhone OS ahora, pero si hay una página de documentación de Apple que detalla todas las macros relevantes y cuando están y no están definidas, apreciaría un enlace a ella como mi búsqueda ha quedado corta hasta ahora.

Gracias!

Respuesta

8

El archivo que está buscando es TargetConditionals.h, que define todas las macros que le interesan Lo encontrará en cada versión del SDK, como la siguiente ruta para el SDK 2.2:.

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

Gracias, no me había dado cuenta de que inicialmente TargetConditionals.h estaba presente en Mac OS X SDK, así como el iPhone SDK. –

2

Si tiene un código que se ejecuta en el iPhone y en el escritorio, puede usar TARGET_OS_IPHONE para determinar si el sistema operativo de destino es cualquier versión del SO del iPhone. También está TARGET_IPHONE_SIMULATOR, que se define solo cuando la aplicación se está creando para el simulador. Todavía están definidos en archivos de encabezado, ¡pero espero que ayuden!

13

de this site encontramos que necesita TARGET_OS_IPHONE

#if TARGET_OS_IPHONE 
//Do iPhone stuff 
#else 
//Do Mac stuff 
#endif 
Cuestiones relacionadas