Лучшая практика для обмена кодами между OSX и IOS-приложением
Я создаю версию существующего приложения OSX для iOS и задаюсь вопросом, что лучше всего использовать для обмена кодами между ними.
Этот код зависит только от основы и динамической библиотеки Sqlite, поэтому он должен компилироваться и работать на обеих платформах.
Мне кажется, есть три возможных варианта:
- Создайте единый проект с OSX и объектами IOS, добавьте исходные файлы к каждой цели, если это необходимо.
- Создайте два отдельных проекта для приложений OSX и IOS, поместите общий код в общее место в рабочей области и добавьте его в качестве ссылки на оба проекта.
- Создайте три проекта: приложение OSX, приложение IOS и общую статическую библиотеку с OSX и объектами IOS; добавьте каждую целевую библиотеку в соответствующее приложение.
Есть ли какая-нибудь причина, по которой один из вышеуказанных подходов может быть лучше, чем два других? Если нет, вариант 2 кажется самым простым на сегодняшний день.
Ответы
Ответ 1
Я сделал это и взял третий подход; отдельная статическая библиотека. Причина, по которой я выбрал этот подход, состояла в том, что он может храниться в пределах своего собственного репозитория git и позже использоваться другими проектами.
Однако одна вещь, которую нужно преодолеть, - это определение платформы, для которой вы компилируете. Я решил это, используя следующий фрагмент кода, который определяет SYSINFO_IOS
или SYSINFO_OSX
, которые затем используются в файлах источника/заголовка библиотеки:
#import <TargetConditionals.h>
#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#define SYSINFO_OSX 1
#else
#define SYSINFO_IOS 1
#endif
Этот фрагмент должен быть в собственном файле заголовка.