Ho due oggetti, entrambi sono controller di vista. Il primo (Ill call it viewController1) dichiara un protocollo. Il secondo (che, ovviamente, chiamerò viewController2) è conforme a questo protocollo.Impossibile trovare la dichiarazione del protocollo per
XCode mi sta dando un errore di generazione di: 'Non riesco a trovare la dichiarazione di protocollo per viewController1'
ho visto varie domande su questo argomento e sono certo che è a che fare con un errore di ciclo, ma non riesco proprio 't vedere nel mio caso ...
codice seguente ..
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
Inizialmente, ho avuto la linea di importazione in viewController1 superiore a quella della dichiarazione di protocollo. Questo stava impedendo al progetto di costruire affatto. Dopo aver cercato su SO, ho capito il problema e ho cambiato le due linee. Ora sto ricevendo un avviso (al contrario di un errore). Il progetto si integra perfettamente e funziona perfettamente. Ma sento ancora che ci deve essere qualcosa di sbagliato da dare un avvertimento.
Ora, per quanto posso vedere, quando il compilatore arriva a viewController1.h, la prima cosa che vede è la dichiarazione del protocollo. Quindi importa il file viewController.h e vede che implementa questo protocollo.
Se li stesse compilando al contrario, prima guardava viewController2.h, e la prima cosa che farebbe è importare viewController1.h, la cui prima riga è la dichiarazione del protocollo.
Mi manca qualcosa?
Non riesco ... (avrei dovuto dirlo) ... viewController1 deve essere in grado di presentare un viewController2. –
C'è la direttiva '@class viewController2;' per quello. Importa il file di intestazione nel 'viewController1.m'. – Costique
Ho aggiornato la risposta per illustrare il punto. – Costique