По моему мнению, следует использовать объявление прямого класса в случае, когда ClassA должен включать заголовок ClassB, а ClassB должен включать заголовок ClassA, чтобы избежать любых циклических включений. Я также понимаю, что #import
является простым ifndef
, так что включение включается только один раз.
Мой запрос таков: когда используется #import
и когда используется @class
? Иногда, если я использую объявление @class
, я вижу общее предупреждение о компиляторе, например следующее:
warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.
Было бы очень приятно понять это, вместо того, чтобы просто удалить декларацию @class
forward и объявить #import
, чтобы отключить предупреждения, которые компилятор мне дает.