Tengo dos objetos, los cuales son controladores de vista. El primero (lo llamaré viewController1) declara un protocolo. El segundo (que, como era de esperar, denominaré viewController2) se ajusta a este protocolo.No se puede encontrar la declaración de protocolo para
XCode me está dando un error de generación de: 'No se puede encontrar la declaración protocolo para viewController1'
que he visto varias preguntas sobre este tema y estoy seguro de que tiene que ver con un error de regulación, pero yo sólo puedo 't ver en mi caso ...
código de abajo ..
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
Al principio, yo tenía la línea de importación en viewController1 por encima de la de la declaración de protocolo. Esto impedía que el proyecto se construyera. Después de buscar en SO, me di cuenta del problema y cambié las dos líneas. Ahora recibo una advertencia (a diferencia de un error). El proyecto funciona bien y realmente funciona perfectamente. Pero todavía siento que debe haber algo malo para recibir una advertencia.
Ahora, por lo que puedo ver, cuando el compilador obtiene viewController1.h, lo primero que ve es la declaración del protocolo. A continuación, importa el archivo viewController.h y ve que implementa este protocolo.
Si los estuviera compilando al revés, vería viewController2.h primero, y lo primero que haría sería importar viewController1.h, cuya primera línea es la declaración del protocolo.
¿Echo de menos algo?
No puedo ... (Debería haber dicho) ... viewController1 necesita poder presentar un viewController2. –
Existe la directiva '@ class viewController2;' para eso. Importe el archivo de encabezado en 'viewController1.m'. – Costique
Actualicé la respuesta para ilustrar el punto. – Costique