Herencia de protocolo en el objetivo C

Tengo un proyecto que tiene un protocolo, una clase que implementa ese protocolo y una subclase de la clase de implementación. Esta es nuestra aplicación de producción.

@protocol ProductionProtocol<NSObject>
@property (nonatomic, retain) NSString *role;
@end

@interface BaseProduction : NSObject<ProductionProtocol>
NSString *role;
@end

@implementation BaseProduction
@synthesize role;
@end

@interface Production : BaseProduction
@end

@implementation Production
@end

También tengo una aplicación de prueba de concepto (POC), que se implementa como un proyecto separado que incluye la aplicación de producción. En la aplicación POC, tengo un protocolo que extiende el protocolo de producción y una clase que extiende la clase de producción.

@protocol POCProtocol<ProductionProtocol>
-(void)cancel;
@end

@interface POC : Production<POCProtocol>
@end

@implementation POC
-(void)cancel{...}
@end

Observe que en ProductionProtocol, tengo un rol NSString que se declara e implementa en la interfaz / clase BaseProduction. en el POC, tengo un método 'cancelar' que se declara en el protocolo, pero no en la interfaz / clase.

Así que aquí está mi pregunta: con mi estructura de clase configurada de esta manera, recibo esta advertencia:

Property 'role' requires method '-role' to be defined - use @synthesize, @dynamic or provide a method implementation

No entiendo por qué recibo esta advertencia. Dado que las propiedades sintetizadas están en la clase base, deberían estar disponibles para la clase POC, y una prueba rápida parece confirmar que lo están. Entonces, ¿qué estoy haciendo mal aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta