基本クラスがありMyDevice
ます。また、基本クラスがありMyDeviceController
ます:
@interface MyDeviceController : NSObject {
MyDevice* device;
}
@property (retain) MyDevice* device;
@end
MyDeviceController には、サブクラスに保持したいデバイスのセッターにいくつかの共通ロジックがあります。
MyDevice の 2 つのサブクラスがあります。
@interface MyAudioDevice : MyDevice
- (void)audioMethod;
@end
と
@interface MyVideoDevice : MyDevice
- (void)videoMethod;
@end
MyDeviceController
: MyVideoDeviceController
andの 2 つのサブクラスは、プロパティとしてandMyAudioDeviceController
を持つ必要があります。MyVideoDevice
MyAudioDevice
device
MyDeviceController のこの 2 つのサブクラスを実装する最良の方法は何ですか? それとも、そのような場合にはいくつかのパターンがあるのでしょうか?
更新しました
私が見つけた最初の解決策は、次のプロパティを再宣言することですMy[Audio|Video]DeviceController
。
@interface MyAudioDeviceController : MyDeviceController
@property (retain) MyAudioDevice* device;
@end
そして実装中
@implementation MyAudioDeviceController
- (void)setDevice:(MyAudioDevice*)device
{
NSAssert([device isKindOfClass:[MyAudioDevice class]], @"What's the...?");
[super setDevice:device];
}
- (MyAudioDevice*)device
{
return (MyAudioDevice*)[super device];
}
@end
このソリューションで唯一気に入らないのは、device
メソッドの再定義です。
別の解決策があるかもしれませんか?