J'essaie d'étendre NSImageView afin que je puisse déléguer la responsabilité glisser/déposer au contrôleur. Tout fonctionne correctement avec le seul problème que le compilateur affiche maintenant des avertissements sur l'envoi de messages aux objets avec l'ID de type. Pour résoudre cela, j'ai supposé que je devrais simplement suffixer le type de l'ivar avec le nom du protocole. Cependant, ceci échoue lamentablement avec le message qu'il ne peut pas trouver la définition pour le protocole.Définition et utilisation de protocoles dans l'objectif-c
#import <Cocoa/Cocoa.h>
@interface DragDropImageView : NSImageView {
id <DragDropImageViewDelegate> _delegate;
}
@property (readwrite, retain) id <DragDropImageViewDelegate> delegate;
@end
@protocol DragDropImageViewDelegate
@optional
- (NSDragOperation)dragDropImageView:(DragDropImageView *)ddiv validateDrop:(id <NSDraggingInfo>)info;
- (BOOL)dragDropImageView:(DragDropImageView *)ddiv acceptDrop:(id <NSDraggingInfo>)info;
- (void)concludeDragOperation:(id <NSDraggingInfo>)sender;
@end
Des pointeurs où je pourrais me tromper? Je suis sûr que cela doit être quelque chose de simple, mais je suis assez nouveau pour obj-c.
+1 pour une bonne question. –
les mots-clés sont: _forward declaration_. – holex