Работа с зависимостями #import в Objective-C

Я создаю набор файлов (в основном библиотеку) для выполнения задачи, которую я буду использовать в приложении для iOS. В библиотеке есть один общедоступный файл заголовков, который импортирует все остальные файлы заголовков, поэтому код, использующий эту библиотеку, должен импортировать только один заголовок. Однако этот общедоступный заголовок также определяет перечисление, которое используется внутри большинства других файлов, поэтому эти файлы должны импортировать общедоступный заголовок. Это создает циклические зависимости, и я получаю ошибки сборки, связанные с тем, что символы не распознаются.

Как правильно обрабатывать #imports в такой ситуации, когда общедоступный файл заголовка делает набор объектов библиотеки доступным для общественности, но зависимым файлам также требуется перечисление (фактически плюс протокол), определенное в общедоступном заголовке. ?


person jrdioko    schedule 08.06.2011    source источник


Ответы (1)


Извлеките определения типов в другой заголовок.

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

person Chuck    schedule 08.06.2011
comment
Ok. Каковы условия для необходимости сделать это? Всегда ли круговой импорт будет вызывать проблемы? Или есть другие конкретные ситуации, в которых необходимо учитывать некоторые вещи, чтобы не запутать компилятор? - person jrdioko; 09.06.2011
comment
@jrdioko: Да, это круговой импорт. Они просто по своей сути проблематичны в Objective-C. - person Chuck; 09.06.2011