У меня есть два объекта, оба из которых являются контроллерами представлений. Первый (вызов называет его viewController1) объявляет протокол. Второй (что неудивительно, что я назову viewController2) соответствует этому протоколу.
XCode дает мне ошибку сборки: "Не удается найти объявление протокола для viewController1"
Я видел различные вопросы по этому вопросу, и я уверен, что это связано с ошибкой цикла, но я просто не вижу этого в моем случае...
Код ниже..
viewController1.h
@protocol viewController1Delegate;
#import "viewController2.h"
@interface viewController1 {
}
@end
@protocol viewController1Delegate <NSObject>
// Some methods
@end
viewController2.h
#import "viewController1.h"
@interface viewController2 <viewController1Delegate> {
}
@end
Изначально у меня была строка импорта в viewController1 выше строки объявления протокола. Это препятствовало строительству проекта вообще. После поиска на SO я понял проблему и переключил две линии вокруг. Теперь я получаю предупреждение (в отличие от ошибки). Проект строит отлично и фактически отлично работает. Но я все еще чувствую, что должно быть что-то неправильно, чтобы получить предупреждение.
Теперь, насколько я вижу, когда компилятор получает viewController1.h, первое, что он видит, это объявление протокола. Затем он импортирует файл viewController.h и видит, что он реализует этот протокол.
Если бы они компилировали их по-другому, сначала он посмотрел бы на viewController2.h, и первое, что он сделал бы, это import viewController1.h, первая строка которого является объявлением протокола.
Я что-то пропустил?