2012-06-05 9 views
7

Tengo dos protocolos que se comunican entre sí. Se definen en el mismo archivo.Protocolo de declaración como @clase

@protocol Protocol1 <NSObject> 
-(void)setProtocolDelegate:(id<Protocol2>)delegate; 
@end 

@protocol Protocol2 <NSObject> 
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; 
@end 

cómo declarar un protocolo vacío Protocol2 acaba de dar a conocer compilador que se declara más adelante?

Si Protocol2 era una clase que escribiría @class Protocol2; antes.

@class Protocol2; 
@protocol Protocol1 <NSObject> 
-(void)setProtocolDelegate:(Protocol2*)delegate; 
@end 

@interface Protocol2 <NSObject> 
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; 
@end 

¿Cuál es la construcción similar para los protocolos?

Respuesta

10

Uso @protocol para los protocolos de declaración adelantada:

@protocol Protocol2; 
@protocol Protocol1 <NSObject> 
-(void)setProtocolDelegate:(id<Protocol2>)delegate; 
@end 

@protocol Protocol2 <NSObject> 
-(void)protocol:(UIViewController<Protocol1>*)anObject chosenElementAtIndex:(NSInteger)aIndex; 
@end 
1

El problema con el es que se ha declarado hacia delante protocolo con la palabra clave @class. Debe ser @protocol.

+0

Sé que no debe ser '@ class '. Usé el segundo fragmento para mostrar la analogía con Classes, para aclarar la pregunta. De todos modos, gracias por la ayuda –

Cuestiones relacionadas