Antes de Swift, definiría un conjunto de esquemas para las versiones alfa, beta y de distribución. Cada uno de estos esquemas tendría un conjunto de macros que se definieron para bloquear ciertos comportamientos a nivel de proyecto. El ejemplo más simple es la macro DEBUG = 1 que se define por defecto para todos los proyectos de Xcode en el esquema predeterminado para la compilación Ejecutar. Se podría consultar #ifdef DEBUG ... y tomar decisiones en el código en consecuencia, incluso compilar código no necesario.
Parece que este tipo de compuerta configuracional no es tan fácil con Swift, ya que las macros no son compatibles. ¿Alguien puede sugerir un enfoque comparable? No me importa si el código se compila per se. Sin embargo, me gustaría incluir características basadas en el esquema de compilación.