I ' У нас есть проект, в котором есть протокол, класс, реализующий этот протокол, и подкласс класса реализации. Это наше производственное приложение.
@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
У меня также есть приложение Proof of Concept (POC), которое реализовано как отдельный проект, включающий производственное приложение. В приложении POC у меня есть протокол, расширяющий производственный протокол, и класс, расширяющий производственный класс.
@protocol POCProtocol<ProductionProtocol>
-(void)cancel;
@end
@interface POC : Production<POCProtocol>
@end
@implementation POC
-(void)cancel{...}
@end
Обратите внимание, что в ProductionProtocol у меня есть роль NSString, которая объявлена и реализована в интерфейсе / классе BaseProduction. в POC у меня есть метод cancel, который объявлен в протоколе, но не в интерфейсе / классе.
Итак, вот мой вопрос: при такой настройке структуры класса я получаю следующее предупреждение:
Property 'role' requires method '-role' to be defined - use @synthesize, @dynamic or provide a method implementation
Я не понимаю, почему получаю это предупреждение. Поскольку синтезированные свойства находятся в базовом классе, они должны быть доступны для класса POC - и быстрый тест, кажется, подтверждает это. Так что я здесь делаю не так?