Ссылка на класс .h подпроекта

Dropbox iOS SDK имеет собственный пакет Framework, но для упрощения его настройки я решил включить его проект Xcode в качестве подпроекта. Как я должен ссылаться на его классы .h? Я добавил .xcodeproj с помощью кнопки «Добавить файлы» и добавил в путь поиска заголовков следующее значение:

$(PROJECT_DIR)

Подпроект выглядит на том же уровне, что и основной проект.

Разве сам импорт не должен связывать зависимости?

(Меня действительно расстраивает система импорта в Xcode)


person Apostolos Apostolidis    schedule 25.07.2015    source источник


Ответы (1)


Ваш базовый подход кажется разумным (и довольно близок к тому, как я работаю со многими проектами поставщиков). Поскольку вы добавили $(PROJECT_DIR) к пути поиска заголовка и предположили, что фреймворк находится в каталоге с именем «Dropbox», вы можете ссылаться на пакеты несколькими способами:

#import <Dropbox/Header.h>
#import "Dropbox/Header.h"

Я предпочитаю думать о подпроектах как о «системных» и поэтому склонен использовать угловые скобки, оставляя двойные кавычки для внутреннего кода. Но любой подход действительно хорош.

Разве сам импорт не должен связывать зависимости?

Нет. Вам все еще нужно связать зависимости. #import делает только одну вещь: вставляет запрошенный файл в текущий файл. Это все, что он делает. Это идентично тому, как вы берете указанный файл и копируете/вставляете его в свой код (это в основном то, как это реализовано в препроцессоре). То, что это используется для файлов «заголовков», является вопросом соглашения. Это не имеет ничего общего с тем, как работает компилятор. Технически вы можете импортировать файл .m, содержащий метод, как способ повторного использования кода. (Я видел, как это делается в проектах, над которыми я работал. Пожалуйста, не делайте этого....)

При работе с модулями ObjC все немного иначе (используется @import, а не #import). Но если вы просто импортируете заголовки, как вам кажется, подумайте об этом как о «вставьте этот другой файл прямо сюда, точно так, как написано».

person Rob Napier    schedule 25.07.2015