J'ai une classe avec une propriété de délégué. Toute personne qui veut être un délégué doit se conformer à un protocole. J'ai défini tout comme ceci:Comment se conformer à un protocole self-made?
#import <UIKit/UIKit.h>
@protocol TheDelegateProtocol;
@interface MyClass : UIView {
id<TheDelegateProtocol> theDelegate;
}
@property (nonatomic, assign) id<TheDelegateProtocol> theDelegate;
@end
@protocol TheDelegateProtocol<NSObject>
@required
- (void)fooBarWithFoo:(CGFloat)foo;
@end
Maintenant, la chose folle est: J'ai une autre classe qui veut être le délégué. Donc, il est conforme à ce protocole, comme ceci:
#import <Foundation/Foundation.h>
@class MyClass; // forward declaration. importet in implementation.
@protocol TheDelegateProtocol; // need forward declaration here, right?
@interface OtherClass : NSObject <TheDelegateProtocol> {
// ivars
}
@end
Je n'arrive pas à faire fonctionner cela. Il dit: "Aucune définition de protocole 'TheDelegateProtocol' trouvé". Eh bien, ce protocole est défini dans MyClass, et j'importe MyClass dans l'implémentation. Une idée de ce qui ne va pas?
A trouvé quelque chose: Dans une méthode où j'essaie d'assigner le protocole, il me dit que OtherClass n'est pas conforme au protocole. Mais ça le fait! Ça n'a aucun sens. J'ai également ajouté la méthode de protocole dans l'en-tête ....
Ce n'est pas une bonne habitude d'ignorer les avertissements, quels qu'ils soient ... –