2012-09-17 10 views
6

Al buscar esto, solo pude encontrar información para otros idiomas. Me gustaría saber la mejor práctica para escribir statments condicionales tales como:Xcode - desarrollo condicional o modo de producción

if (DEV_MODE){ 
    //do something 
}else{ 
    //do the real stuff 
} 

, y luego poner Dev_Mode dentro o fuera en algún archivo global, de modo que sólo tengo que cambiarlo a encendido o apagado en lugar de cambiar el código en múltiples lugares. Tengo algunas ideas, pero estoy buscando consejos sobre la mejor manera de hacerlo.

+0

¿Desea que 'DEV_MODE' se determine en el momento de la compilación? ¿O desea poder cambiar 'DEV_MODE' en tiempo de ejecución sin volver a compilar? –

Respuesta

14

Prueba esto:

#ifdef DEBUG 
    // do stuff 
#endif 

La corriente La versión de Xcode establece automáticamente esta macro en nuevos proyectos. Ve a tus proyectos Configuraciones de compilación para asegurarte. Si no está ahí hay que añadir usted mismo:

enter image description here

+0

Sí, mi configuración lo refleja. Entonces nunca tengo que cambiar nada, ¿cierto? Supongo que cuando uso el esquema de la tienda de aplicaciones, DEBUG será 0 automáticamente. – soleil

0

En la configuración de su proyecto, hay una sección llamada "Macros de preprocesador". En esa sección, puede agregar una cadena para su compilación de depuración, como "DEV_MODE" o lo que quiera. Luego puede hacer las condiciones que mencionó anteriormente y cuando su aplicación esté desarrollada para "Liberar" o cualquier otra configuración que no contenga su macro, su cheque debería fallar.

1

las variables del preprocesador son lo que desea, en sus configuraciones de construcción definen una variable (DEV_MODE por ejemplo), y luego usar los controles del preprocesador como:

#if DEV_MODE 
    //dev mode code 
#else 
    //non-dev mode code 
#endif 
+0

Es mejor usar 'DEBUG', está definido/indefinido por Xcode por defecto (por supuesto, ese no es el caso usando otra cadena de herramientas de línea de comando IDE/a). –

8

(. Esta pregunta es no relacionados con Xcode)

Dicho esto, en lugar de contaminar el código con los fondos de inversión de tipo C, puede usar directivas de preprocesador para filtrar el modo de depuración y liberación. Hasta donde yo sé, es una práctica común definir la macro DEBUG en 1 si está en modo de prueba, y no definirla si está en modo de lanzamiento. (Además, Xcode puede definir esto para usted, he visto que se ha confiado en este comportamiento). La razón es que el uso del preprocesador es más legible, ya que no entra en la sangría, está mejor separado del codificar visualmente En resumen, tratar

#ifdef DEBUG 
    // do debug stuff here 
#else 
    // do release stuff here 
#endif 

Un argumento adicional para macros del preprocesador es que puede condicionar el espacio de nombres global, que no se podía en el código C. I. e., Con macros del preprocesador, se puede escribir

#ifdef DEBUG 
    int functionOne() 
    { 
    } 
#else 
    char *functionTwo(int a) 
    { 
    } 
#endif 

No se podía hacer esto sin el preprocesador.

+0

Gracias por la explicación. – soleil

Cuestiones relacionadas