Mam dwa obiekty, z których oba są kontrolerami widoku. Pierwszy (Ill call it viewController1) deklaruje protokół. Drugi (który nieoczekiwanie nazwałbym viewController2) jest zgodny z tym protokołem.Nie można znaleźć deklaracji protokołu dla
XCode daje mi błąd kompilacji: „Nie można odnaleźć deklarację protokołu dla viewController1”
widziałem różne pytania na ten temat i jestem pewien, że ma do czynienia z błędem pętli, ale po prostu może „t go zobaczyć w moim przypadku ...
kod poniżej ..
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
Początkowo miało linii importu w viewController1 powyżej tego zgłoszenia protokołu. To uniemożliwiło budowanie projektu. Po wyszukaniu na SO, zdałem sobie sprawę z problemu i zmieniłem obie linie. Otrzymuję teraz ostrzeżenie (w przeciwieństwie do błędu). Projekt dobrze się układa i działa idealnie. Ale nadal uważam, że musi być coś złego, aby otrzymać ostrzeżenie.
Teraz, o ile widzę, kiedy kompilator dostaje się do viewController1.h, pierwszą rzeczą, którą widzi jest deklaracja protokołu. Następnie importuje plik viewController.h i widzi, że implementuje ten protokół.
Gdyby kompilował je na odwrót, najpierw obejrzałby viewController2.h, a pierwszą rzeczą, jaką zrobiłby to import viewController1.h, którego pierwszą linią jest deklaracja protokołu.
Czy brakuje mi czegoś?
Nie mogę ... (Powinienem był powiedzieć) ... viewController1 musi być w stanie przedstawić viewController2. –
Do tego jest dyrektywa '@class viewController2;'. Zaimportuj plik nagłówkowy w 'viewController1.m'. – Costique
Zaktualizowałem odpowiedź, aby zilustrować ten punkt. – Costique