2012-09-17 16 views
14

Estoy creando una versión iOS de una aplicación OSX existente y me pregunto cuáles son las mejores prácticas para compartir código entre las dos. El código en cuestión solo depende del marco básico y de la biblioteca dinámica Sqlite, por lo que debe compilarse y ejecutarse correctamente en ambas plataformas.Mejor práctica para compartir código entre OSX y la aplicación IOS

Me parece hay tres opciones posibles:

  1. crear un único proyecto con y OSX y un objetivos IOS, añadir archivos de origen para cada objetivo, según corresponda.
  2. Cree dos proyectos separados para las aplicaciones OSX e IOS, coloque el código compartido en una ubicación común en el área de trabajo y agréguelo como referencia para ambos proyectos.
  3. Cree tres proyectos: aplicación OSX, aplicación IOS y una biblioteca estática compartida con objetivos OSX y IOS; agregue cada objetivo de biblioteca a la aplicación respectiva.

¿Hay alguna razón para que uno de los enfoques anteriores sea mejor que los otros dos? Si no, la opción 2 parece ser la más simple de lejos.

Respuesta

4

He hecho esto y tomé el tercer enfoque; una biblioteca estática separada. La razón por la que elegí ese enfoque fue porque se puede mantener dentro de su propio git repo y compartirlo con otros proyectos más adelante.

Una cosa para superar, sin embargo, es la determinación de la plataforma para la que está compilando. He resuelto esto utilizando el siguiente fragmento de código que define SYSINFO_IOS o SYSINFO_OSX que luego se utilizan dentro de los archivos de origen de la biblioteca/cabecera:

#import <TargetConditionals.h> 

#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR 
#define SYSINFO_OSX 1 
#else 
#define SYSINFO_IOS 1 
#endif 

Este fragmento debe estar en su propio archivo de cabecera.

Cuestiones relacionadas