"Библиотечные проекты" в iOS
Некоторое время назад я создал и приложение для Android. Затем мне нужно было создать очень похожее приложение (по функциональности) с некоторыми косметическими изменениями, изменениями в брендинге и мелкомасштабных изменениях. Я реорганизовал исходное приложение в качестве библиотечного проекта, создал приложение, которое использовало этот библиотечный проект, и воссоздал исходную функциональность. Затем я создал новое приложение, которое использовало тот же самый библиотечный проект, а также реализовало небольшие изменения, необходимые для второго приложения. Это работало отлично. Теперь, если требуется изменение, его очень легко реализовать в нескольких приложениях: я просто изменяю проект библиотеки и перекомпилирую все приложения.
У меня также было оригинальное приложение, доступное для iOS, и мне нужно сделать второе приложение доступным для iOS. Я мог бы, естественно, скопировать проект, внести изменения и создать другие приложения. Однако это означало бы двойную работу, если бы мне нужно было что-то изменить в основной функциональности. Я хотел бы иметь возможность реорганизовать проект / приложение iOS аналогично Android, но не уверен, как это сделать - или если такая функциональность даже доступна. Любые предложения очень ценятся.
2 ответа
Вы можете создать Единый проект с разными целями.
Затем у вас будут цели A и B, например, и файлы CoreFile, которые являются общими для всех целей.
Предположим, у вас есть HomeViewController с некоторыми незначительными отличиями. Вы можете создать единый интерфейс HomeViewController.h
и две реализации AHomeViewController
а также BHomeViewController
оба расширяются BaseViewController
,
Затем откройте AHomeViewController и в FileInspector в поле "Целевое членство" отметьте только цель A. В BHomeViewController вы делаете то же самое. Рисунок 1, иллюстрируйте, что вы должны сделать (имена отличаются от примера, потому что это реальный пример из одного из моих проектов).
Если по какой-то причине вам необходимо знать, какие цели вы используете, вы можете определить это с помощью макроса препроцессора на Target -> Build Settings. Как показано на рисунке 2.
Тогда вы можете использовать #ifdef APP_CB
проверить текущую цель.
Как уже упоминалось, вы действительно можете регулироватьtarget membership
[О] каждого файла, который вы добавляете. Но на мой взгляд лучше создать отдельный фреймворк (библиотеку) и добавить его как зависимость