私はプロトコルを持っています:
@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];
}
しかし、サポートされていないことをしているのか、すべきでないことをしているのか、それともコンパイラの制限/バグなのかを知りたいだけです。