¿Cómo ajustarse a un protocolo propio?

Tengo una clase con una propiedad delegada. Cualquier persona que quiera ser un delegado debe cumplir con un protocolo. Definí todo de esta manera:

#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

Ahora lo loco es: tengo otra clase que quiere ser el delegado. Entonces se ajusta a ese protocolo, así:

#import <Foundation/Foundation.h>

@class MyClass; // forward declaration. importet in implementation.
@protocol TheDelegateProtocol; // need forward declaration here, right?

@interface OtherClass : NSObject <TheDelegateProtocol> {
    // ivars
}

@end

No puedo hacer que eso funcione. Dice: "No se encontró ninguna definición de protocolo 'TheDelegateProtocol'". Bueno, ese protocolo está definido en MyClass, y estoy importando MyClass en la implementación. ¿Alguna idea de lo que está mal allí?

Descubrí algo: En un método en el que trato de asignar el protocolo, me está diciendo que OtherClass no cumple con el protocolo. Pero lo hace! Eso no tiene sentido. También agregué el método del protocolo en el encabezado ....

Respuestas a la pregunta(7)

Su respuesta a la pregunta