Как у меня могут быть ссылки между двумя классами в Objective C?

  • Не упускают отношение классов Шаблона по сравнению со стандартными классами. Высокое отношение указало бы на Проверку Patternitis
  • на магические числа, не определенные как константы
  • Использование утилита сопоставления с образцом для обнаружения потенциально дублированного кода
5
задан treznik 13 July 2009 в 13:53
поделиться

2 ответа

Вы можете использовать ключевое слово @class для прямого объявления класса в файле заголовка. Это позволяет использовать имя класса для определения переменных экземпляра без необходимости # импортировать файл заголовка.

Class1.h

@class Class2;

@interface Class1
{
    Class2 * class2_instance;
}
...
@end

Class2.h

@class Class1;

@interface Class2
{
    Class1 * class1_instance;
}
...
@end

Обратите внимание, что вам все равно придется ] #import соответствующий файл заголовка в ваши файлы .m

20
ответ дан 18 December 2019 в 06:51
поделиться

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

3
ответ дан 18 December 2019 в 06:51
поделиться