2010-04-29 25 views
21

He experimentado algo hoy mientras estoy construyendo mi aplicación. He declarado un protocolo en mi MyObject1 y agregué la propiedad de delegado en él. Asigné MyObject2 como delegado de MyObject1. He añadido que de esta manera, como de costumbreNo se puede encontrar la declaración de protocolo en Xcode

@interface MyObject2 : UIViewController <DelegateOfObject1>

Pero el Xcode dice que mi declaración del protocolo no se puede encontrar. Revisé mi código pero he declarado este protocolo. Intenté asignar MyObject2 como delegado de otro objeto. He editar mi código como este

@interface MyObject2 : UIViewController <UITableViewDelegate,DelegateOfObject1>

pero Xcode decir una vez más que no se encuentran declaración de protocolo de DelegateOfObject1. Intenté eliminar DelegateOfObject1 en mi código y agregar asignar MyObject como delegado de otro objeto y así es. Se han encontrado

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate>

No hay errores. A continuación, he intentado de nuevo para agregar nuevo mi DelegateOfObject1 en el código

@interface MyObject2 : UIViewController <UITableViewDelegate,UITabBarDelegate,DelegateOfObject1>

En ese momento Xcode no encontró ningún error en mi código. Así que intenté de nuevo quitar el UITableViewDelegate y UITabBarDelegate en mi código.

@interface MyObject2 : UIViewController <DelegateOfObject1>

En ese momento no había encontrado ningún error, sino que era el mismo código que he escritura antes. ¿Cuál debería ser probablemente la causa de esas cosas en mi código?

Gracias ...

+0

'@protocol DelegateOfObject1 @optional - (void) someThingHappensAt: (NSString *) onWhatStuff; @ end' – edie

+0

FWIW Tuve exactamente este error, pero fue causado por una copia duplicada de una versión anterior de un marco en una de las carpetas especificadas en las rutas de búsqueda del marco. La versión anterior no contenía el protocolo en cuestión, pero la carpeta contenedora ocupaba el primer lugar en el orden de búsqueda. Eliminar el marco duplicado resolvió el error. – StephenT

+0

Compruebe esta solución http://stackoverflow.com/questions/6447573/cannot-find-protocol-declaration –

Respuesta

11

He puesto mi declaración protocolo sobre archivo separado e importación en MyObject2

+0

Más detalles para resolver el problema? – vgonisanz

+0

Elimine la definición de @protocol de la clase. Cree un nuevo archivo de encabezado ('Archivo> Nuevo> Archivo ...> Archivo de encabezado', pegue la definición de @protocol y luego importe el archivo de encabezado. –

1

¿Estás haciendo un

#import "NameOfDelegate.h" 

En la parte superior de la cabecera MyObject?

+0

He añadido el necesario.h archivo – edie

57

se produjo el error debido al bucle de importación.

+2

+ 1, para la Buena respuesta. Mismo error de mi parte ... import loop. :) – mAc

+0

¡Salud, eso me estaba causando dolor de cabeza! –

+12

-1, sin explicación. Explica qué es un ciclo de importación, cómo solucionarlo. –

4

El error debe estar en el bucle de importación.

He importado "AppDelegate.h" en ambas clases. Lo eliminé de la clase que declaró el protocolo y el error desapareció. :)

0

Use '@clase MyObject;' para evitar el ciclo de importación.

Cuestiones relacionadas