У меня есть два объекта, оба из которых являются контроллерами представления. Первый (вызов называет его 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, первая строка которого является объявлением протокола.
Я что-то упустил?
Я не могу ... (я должен был сказать) ... viewController1 должен быть в состоянии представить viewController2. –
Существует директива '@class viewController2;' для этого. Импортируйте файл заголовка в 'viewController1.m'. – Costique
Я обновил ответ, чтобы проиллюстрировать суть. – Costique