我有一个协议:
@protocol Gadget <NSObject>
@property (readonly) UIView *view;
- (void) attachViewToParent:(UIView *)parentView;
@end
还有一个“抽象”基类,具有以下实现(作为吸气剂,未显示)-(UIView *)view
:
// Base functionality
@interface AbstractGadget : NSObject {
UIView *view;
}
@property (readonly) UIView *view;
@end
但是当我Gadget
在 的子类中实现协议时AbstractGadget
,如下所示:
// Concrete
@interface BlueGadget : AbstractGadget <Gadget> {
}
- (void) attachViewToParent:(UIView *)parentView;
@end
@implementation BlueGadget
- (void) attachViewToParent:(UIView *)parentView {
//...
}
@end
我收到一个编译器错误,告诉我“警告:属性 'view' 需要定义方法 '-view'。” 我可以使用@dynamic
或添加存根方法来解决这个问题:
- (UIView *) view {
return [super view];
}
但我只是想知道我是否正在做一些不受支持的事情,我不应该做的事情,或者它是否只是编译器中的一个限制/错误?