Como se conformar a um protocolo feito por você mesmo?
Eu tenho uma classe com uma propriedade de delegado. Qualquer pessoa que queira ser um delegado deve obedecer a um protocolo. Eu defini tudo assim:
#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
Agora o mais louco é: eu tenho outra classe que quer ser a delegada. Então, ele está em conformidade com esse protocolo, assim:
#import <Foundation/Foundation.h>
@class MyClass; // forward declaration. importet in implementation.
@protocol TheDelegateProtocol; // need forward declaration here, right?
@interface OtherClass : NSObject <TheDelegateProtocol> {
// ivars
}
@end
Eu não posso fazer isso funcionar. Diz: "Nenhuma definição de protocolo 'TheDelegateProtocol' found". Bem, esse protocolo é definido no MyClass e estou importando o MyClass na implementação. Alguma ideia do que está errado aí?
Descobri algo: Em um método onde tento atribuir o protocolo, está me dizendo que o OtherClass não está em conformidade com o protocolo. Mas isso acontece! Isso não faz sentido. Eu também adicionei o método de protocolo no cabeçalho ....