Con Xcode 4, ¿cuál es la forma correcta de tener un proyecto principal + un proyecto de código compartido?

Actualmente tengo una aplicación para iPhone que es solo un gran proyecto. Tiene cientos de files de código. Tengo una carpeta llamada "Helper" que incluye todas mis classs que he creado. Voy a hacer una segunda aplicación que también necesita usar el mismo código que está en la carpeta "Helper".

¿Cuál es la forma correcta de compartir ese código "Helper" entre dos proyectos / aplicaciones? ¿Debo ponerlo en su propio file de proyecto y luego agregar la aplicación principal + "Helper" a un espacio de trabajo común? No estoy interesado en hacer bibliotecas estáticas ni nada … Solo quiero que el código se segrega de alguna manera.

Ya intenté hacer un segundo file de proyecto "en blanco" y arrastré el código, pero cuando trato de build Xcode solo pienso que me faltan los files de encabezado ahora … por alguna razón, no ve el código en el otro proyecto .

Sería ideal si hubiera una clara distinción entre el código compartido y el código exclusivo de su aplicación actual. Si aún no lo hay, trate de asegurarse de que todo lo que se compartirá no dependa de nada del código exclusivo del proyecto.

Una forma de lograr esto es mediante el uso de un repository Git y luego convertir el código compartido en su propio proyecto de repository. Luego, en el repository para ambos proyectos, incluya el código auxiliar como un submodule.

He trabajado con proyectos que usan submodules, aunque todavía no he configurado el aspecto submodule. El beneficio aquí es que cualquier cambio que realice en "ayudante" se puede arrastrar a ambos proyectos, por lo que los cambios se sincronizan.

Si aún no está familiarizado con Git, le recomiendo familiarizarse. Configurar un repository Git en su computadora, incluso si no está queueborando con otros, es bastante útil. XCode actualmente ofrece la opción de configurar un repository cuando crea su proyecto. Si no lo hizo, o no está seguro, puede crear un repository después del hecho.

Utilizo un tree de código fuente para administrar mis repositorys. Crear un repository es bastante sencillo y fácil desde allí SourceTree . Sin embargo, puede usar el propio cliente de escritorio de GitHub, o cualquier otro cliente si lo desea, dependiendo de cómo configure su proyecto.

Alguna información sobre cómo configurar un submodule en git: Configurar un submodule

Entonces, para recapitular:

  1. Asegúrese de que su código de "ayudante" pueda pararse por sí mismo
  2. Coloque el código auxiliar en su propio repository.
  3. Incluya el repository de ayudante como un submodule para cualquier proyecto en el que desee que ingrese el código.

¡Espero que ayude!

Me parece que la situación que has descrito es exactamente lo que un marco está diseñado para resolver. Lo que probablemente termine haciendo es crear otro proyecto con todo su código compartido dentro y crear un marco en el que sus aplicaciones puedan vincularse.

Sugeriría leer la Guía de progtwigción marco de Apple. Desde la introducción a la guía:

Mac OS X hace un amplio uso de los frameworks para distribuir código compartido y resources, como las interfaces para el sistema en sí. Puede crear frameworks propios para proporcionar código compartido y resources a una o más de las aplicaciones de su empresa. También puede crear frameworks que contengan bibliotecas de classs o modules complementarios con la intención de distribuirlos a otros desarrolladores.

Puede poner el código compartido en una carpeta separada y luego agregarlo a ambos proyectos. Pero no olvide agregar la ruta de la carpeta a las User Header Search Paths en Build Settings > Search Paths .

No estoy interesado en hacer bibliotecas estáticas ni nada …

Sin embargo, para iOS, un objective de biblioteca estática es exactamente lo que usaría.

No se requiere espacio de trabajo, solo un proyecto Xcode separado con esa biblioteca estática compartida, que ambas aplicaciones hacen reference.