La respuesta original es de los días previos a la compra de la aplicación. La respuesta correcta ahora es enviar un solo archivo binario y ofrecer su versión paga a través de las actualizaciones de la aplicación . Es un poco más código, pero es un solo envío y su tasa de conversión será probablemente mejor.
Sin embargo, si aún desea versiones de su aplicación:
Xcode tiene un buen soporte para múltiples objetivos.
En el menú del proyecto, seleccione "Nuevo objetivo ...". Agregue otro ejecutable de iPhone (aplicación Cocoa Touch) a continuación, puede especificar en recursos por recurso qué elementos se incluyen en su destino. Esto puede incluir solo compilar cierto código en su versión paga.
Puede obtener retroalimentación visual rápida sobre lo que está y lo que no está incluido en el objetivo actual al hacer clic derecho en el encabezado de la lista "Grupos y archivos" (lhs superiores) y habilitar la Membresía de destino.
Cambias entre la construcción de diferentes objetivos de la misma forma que cambias entre construir para Simulator o iPhone.
Para especificar en el tiempo de compilación cómo se comporta una clase específica, puede hacer dos cosas: incluir dos versiones de la clase que cada una se construye para su objetivo respectivo o puede establecer un indicador de tiempo de compilación para el preprocesador. Seleccione el objetivo en la lista "Grupos y archivos" y luego "obtener información" sobre ese objetivo. Ve a la pestaña de compilación y busca "preprocesar". Debería ver un elemento llamado "Macros de preprocesador" agregar LITEa su objetivo lite y de la misma manera agregarlo PAIDa su objetivo pagado.
Si está en sus archivos de origen, puede determinar en tiempo de compilación qué versión está compilando para usar, #ifdef LITEetc.
Yendo aún más lejos, podría establecer un indicador global o una variable de miembro AppDelegate basada en #ifdef LITE y cambiar el comportamiento en tiempo de ejecución para las aplicaciones Lite y pagas. Sin embargo, no estoy seguro de ver valor en eso.