¿Agregar macro BETA = 1 a Xcode para ciertos esquemas?

Quiero agregar una nueva macro #define a mi aplicación, pero solo para ciertos esquemas, como un esquema beta. ¿Cuál es la mejor manera de hacer esto? Sé que cuando ejecutas la aplicación en testing (es decir, en el simulador) agrega una macro DEBUG = 1, pero no puedo encontrar la forma de agregar más.

La mejor manera es usar los files de configuration de Xcode .

Agregue un par de files llamados Beta.xcconfig y Distribution.xccconfig (o algo así) y agregue sus macros para cada tipo de compilation.

Beta.xcconfig:

 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) BETA=1 

Distribution.xcconfig.

 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) BETA=0 

Puede agregar fácilmente los files con el nuevo cuadro de dialog de files:

Crear un archivo xcconfig

Luego, debe asignar cada file a un estilo de compilation. Llegó al proyecto de nivel superior, la configuration del proyecto (justo arriba de los objectives) y click la sección "Información":

Mapear xcconfigs para crear estilos

En su código puede usar la macro como siempre:

 #if BETA // do something only in beta #endif 

Si, en lugar de asignar un valor, simplemente defina la macro, debería usar #ifdef .

Si utiliza varias macros, es posible que deba comprobar que todo funciona según lo esperado buscando en sus loggings de compilation:

crear registros con macros resaltados

Los esquemas solo ejecutan configuraciones de compilation.

las macros solo pueden configurarse para configuraciones de compilation

hacer una nueva configuration de compilation Y un nuevo esquema para usarlo

es un poco incómodo: /

La alternativa (que utilicé) estaría en la configuration de compilation para su proyecto o destino.

1) Vaya a Proyecto -> Destino -> Configuración de compilation
2) Buscar "macros de preprocesador"

Ahora debería poder ver todos los esquemas definidos para ese proyecto y agregar las macros de preprocesador que desee. Solo restring dejar el $ (henetworkingado). También es probable que desee conservar todas las demás macros definidas, ya que en mi caso tenía la definición de COCOAPODS = 1.