Mam objc klasę bazową:Rozszerzanie delegata z klasy bazowej
@protocol BaseClassDelegate;
@interface BaseClass : NSObject
@property (nonatomic, weak) id <BaseClassDelegate> delegate;
@end
@protocol BaseClassDelegate <NSObject>
-(void)baseDelegateMethod;
@end
tworzę szybkiego sub-klasy, w którym chcę przedłużyć delegata ...
protocol SubClassDelegate : BaseClassDelegate {
func additionalSubClassDelegateMethod();
}
class SubClass: BaseClass {
@IBAction func onDoSomething(sender: AnyObject) {
delegate?.additionalSubClassDelegateMethod(); <--- No such method in 'delegate'
}
}
Teraz, kiedy tworzę swoją podklasę, mogę powiedzieć, że jest zgodna z SubClassDelegate i ustawić delegata. Problem polega (oczywiście) na tym, że "delegat" nie istnieje w tej pod-klasie. Czy istnieje sposób, aby powiedzieć kompilatorowi, aby "rozszerzyć" mojego delegata na moją pod-klasę? (lub jestem tutaj obłąkany i nie zauważyłem czegoś oczywistego)
Dzięki. Druga opcja działała, chociaż pierwsza opcja wyglądała na bardziej delegowaną, ale spowodowała błędy kompilatora w.r.t. przesłanianie właściwości i typu. – Fittoburst
Tak, przepraszam, nie można przesłonić właściwości, aby była bardziej szczegółowa niż klasa nadrzędna. Zaktualizowałem pierwszą próbkę. – redent84