抽象クラスを作成し、そのプロパティの一部をサブクラスに継承しようとしています。抽象クラスのヘッダー ファイルにプロパティを残すと、すべてのプロパティにアクセスできます。問題は、サブクラスのインスタンスもこれらのプロパティにアクセスできることです。これは、私の場合は常に望ましいとは限りません。
たとえば、ボタンの押下をサブクラスに送信する抽象クラスにデリゲートがあります。これは継承を構造化する最良の方法ではない可能性があることを認識しているため、他の提案を歓迎します。ただし、インスタンスですべてのプロパティを使用可能にすることなく、サブクラスがスーパークラスからいくつかのプロパティを継承する方法を知りたいです。前もって感謝します!
以下にコード例を示します。
@interface AbstractClass : UIView
@property (nonatomic, strong) id<ButtonDelegate>buttonDelegate;
@end
…
@protocol ButtonDelegate
@required
- (void) buttonWasPressed;
@end
…
@interface SubClass() <ButtonDelegate>
- (id)init {
self = [super init];
if (self) {
self.buttonDelegate = self;
}
return self;
}
-(void) buttonWasPressed {
[self doSomething];
}
…
@implementation ViewController
- (void)viewDidLoad {
SubClass *subClass = [[SubClass alloc] init];
subClass.buttonDelegate = self; // THIS IS NOT DESIRABLE
}