2008-11-14 8 views
3

J'essaye de créer un protocole de délégué pour un UIView personnalisé. Voici ma première tentative:Syntaxe pour créer un délégué View dans Objective-C

@protocol FunViewDelegate 
@optional 
- (void) funViewDidInitialize:(FunView *)funView; 
@end 


@interface FunView : UIView {  
@private 
} 

@property(nonatomic, assign) id<FunViewDelegate> delegate; 

@end 

Cela ne fonctionne pas parce que l'interface FunView n'a pas été déclarée au moment de la déclaration de FunViewDelegate. Je l'ai essayé d'ajouter un ala prototype C++ avant la @protocol:

@interface FunView; 

Mais ce juste pousse les noix du compilateur. Comment suis-je censé faire ça?

Répondre

10

syntaxe de classe Forward est @class Foo;, pas @interface Foo;.

9

Il semblerait que vous pouvez transmettre déclarer les protocoles:

@protocol FunViewDelegate; 

@interface FunView : UIView {  
@private 
    id<FunViewDelegate> delegate; 
} 
@property(nonatomic, assign) id<FunViewDelegate> delegate; 
@end 

@protocol FunViewDelegate 
@optional 
- (void) funViewDidInitialize:(FunView *)funView; 
@end