Вы можете использовать ключевое слово @class
для прямого объявления класса в файле заголовка. Это позволяет использовать имя класса для определения переменных экземпляра без необходимости # импортировать
файл заголовка.
Class1.h
@class Class2;
@interface Class1
{
Class2 * class2_instance;
}
...
@end
Class2.h
@class Class1;
@interface Class2
{
Class1 * class1_instance;
}
...
@end
Обратите внимание, что вам все равно придется ] #import
соответствующий файл заголовка в ваши файлы .m
Циклическая зависимость часто указывает на проблему проектирования. Возможно, у одного или обоих классов слишком много обязанностей. Рефакторинг, который может возникнуть из циклической зависимости, заключается в перемещении взаимозависимых функций в собственный класс, который потребляют оба исходных класса.