Ответ на ваш вопрос либо идти вперед и импортировать файл заголовка ЬурейеГо или использовать общий тип, как NSInteger вместо перечислимого типа.
Однако есть больше причин не импортировать файл заголовка, а не просто компилировать скорость.
Не импортирование файла заголовка также снижает ваш непреднамеренный доступ к посторонним классам.
Например, у вас есть класс TrackFileChanges, который отслеживает файловую систему для изменений в определенном файле, и у вас есть класс CachedFile, в котором хранятся кэшированные данные из файла. Последний может использовать частный ivar типа TrackFileChanges *, но для использования CachedFile это просто деталь реализации (в идеале, ivar будет автоматически генерироваться с помощью частного свойства с использованием новой среды выполнения, но это невозможно, повторное использование старого времени выполнения).
Таким образом, клиенты, которые #import "CachedFile.h", вероятно, не нуждаются или не хотят получить доступ к TrackFileChanges.h. И если они это сделают, они должны четко прояснить, #importing это самостоятельно. Используя @class TrackFileChanges instea #import «TrackFileChanges.h» в CachedFile.h, вы улучшаете инкапсуляцию.
Но все, что было сказано, ничего не связано с импортом файла заголовка из второго заголовочного файла, если второй заголовок хочет разоблачить первого для всех клиентов. Например, файлы заголовков, объявляющие классы, должны быть импортированы непосредственно в заголовочные файлы подкласса, и файлы заголовков, объявляющие протоколы, могут быть импортированы напрямую (хотя вы можете использовать @protocol ABC, чтобы этого избежать).
Для недавнего ответа (Swift 3, 2017) смотрите на мой ответ. http://stackoverflow.com/a/42009056/342794 – lal