나는 기본 클래스 MyDevice
을가집니다. 또한 나는 기본 클래스 MyDeviceController
있습니다Objective-C 속성/상속/디자인 조언
@interface MyDeviceController : NSObject {
MyDevice* device;
}
@property (retain) MyDevice* device;
@end
MyDeviceController 내가 서브 클래스에서 유지하려는 장치의 세터의 몇 가지 일반적인 논리를 가지고 있습니다. MyDeviceController
의
@interface MyAudioDevice : MyDevice
- (void)audioMethod;
@end
및
@interface MyVideoDevice : MyDevice
- (void)videoMethod;
@end
그리고 두 개의 서브 클래스 :
MyVideoDeviceController
및
MyAudioDeviceController
device
특성으로
MyVideoDevice
및
MyAudioDevice
이 있어야
나는 MyDevice 2 개 서브 클래스가 있습니다.
MyDeviceController의이 두 하위 클래스를 구현하는 가장 좋은 방법은 무엇입니까? 또는 그런 경우에 대한 약간의 후퇴가있을 수 있습니까?
@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
나는이 솔루션에 좋아하지 않는 유일한 것은의를 :
은 내가 찾은 첫 번째 솔루션은 My[Audio|Video]DeviceController
에 속성을 재 선언 할
입니다 업데이트 device
메서드의 재정의입니다.
다른 해결책이있을 수 있습니까?
사용하는 인터페이스 때문에 컨트롤러가 장치의 모든 유형을 받아 들일 수에 다음 mydevice (들) 및 프로그램 (내가 목표 - C에있다라는 것을 잊지). –
@TomIngram : Protocols은 – dreamlax