Extending a delegate from a base class

后端 未结 2 832
日久生厌
日久生厌 2021-01-18 09:51

I have an objc base class:

@protocol BaseClassDelegate;

@interface BaseClass : NSObject

@property (nonatomic, weak) id  delegate;         


        
2条回答
  •  轮回少年
    2021-01-18 10:14

    I'd either create a wrapper delegate to make it the correct type in SubClass.

    class SubClass: BaseClass {
        var myDelegate: SubClassDelegate? {
            get { return delegate as? SubClassDelegate }
            set { delegate = newValue }
        }
        @IBAction func onDoSomething(sender: AnyObject) {
            myDelegate?.additionalSubClassDelegateMethod();
        }
    }
    

    Or simply cast the delegate to the expected type:

    (delegate as? SubClassDelegate)?.additionalSubClassDelegateMethod();
    

提交回复
热议问题