Создание фреймворка

Практически у каждого разработчика наступает момент, когда все наработки становится неудобно держать в виде исходных файлов. Возникает обоснованное желание скомпилировать это добро в библиотеки, динамически подключаемые по мере надобности. Начиная с Xcode 6 такое реально.

Cocoa Touch Framework creation

В отличие от статических библиотек, фреймворк кроме кода может содержать весь набор ресурсов: иконки, изображения, звуки, конфигурационные файлы и прочие данные.

Наполнение проекта фреймворка ничем не отличается от обычного. Разве что в коде нужно правильно выставлять уровни доступа элементов. Если уровень не задан явно, то примет значение по умолчанию — internal, запрещающее доступ извне модуля, поэтому весь открытый интерфейс должен быть public.

Framework sample code

После успешного построения в каталоге появится и сам фреймворк.

Framework file

Его, конечно, можно и вручную каждый раз копировать отсюда в зависимые проекты, но лучше настроить автокопирование в общую папку (где потом и забирать). Для этого понадобится скрипт постобработки.

Edit scheme menu Build post-action script

Фреймворк готов.

Чтобы им воспользоваться, в зависимых от него проектах необходимо выполнить два действия.

Первое — в General настройках добавить фреймворк в Embedded Binaries, убрав в опциях подтверждения флажок Copy items if needed для связи по ссылке, без физического копирования. При этом Linked Frameworks and Libraries заполнится автоматически.

Add framework Copy framework as link Added framework

Второе — в настройках Build Settings включить каталог фреймворка в Framework Search Paths.

Framework search path setting

Теперь фреймворк можно импортировать и использовать в коде.

Framework code usage

В случае визуальной привязки объекта к классу фреймворка, следует явно указывать модуль.

Framework storyboard usage