На самом деле это метод, с которого я начинал, и какое-то время он работал у нас нормально, но я хотел посмотреть, смогу ли я заставить его работать «правильно».

я есть проект, в котором есть протокол, класс, реализующий этот протокол, и подкласс класса реализации. Это наше производственное приложение.

@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

У меня также есть приложение для проверки концепции (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 - и быстрый тест, кажется, подтверждает, что они есть. Так что я тут делаю не так?

Ответы на вопрос(1)

Ваш ответ на вопрос