我有一个 objc 基类:
@protocol BaseClassDelegate;
@interface BaseClass : NSObject
@property (nonatomic, weak) id <BaseClassDelegate> delegate;
@end
@protocol BaseClassDelegate <NSObject>
-(void)baseDelegateMethod;
@end
我正在创建一个快速子类,我想在其中扩展我的委托......
protocol SubClassDelegate : BaseClassDelegate {
func additionalSubClassDelegateMethod();
}
class SubClass: BaseClass {
@IBAction func onDoSomething(sender: AnyObject) {
delegate?.additionalSubClassDelegateMethod(); <--- No such method in 'delegate'
}
}
现在,当我创建子类时,我可以说它符合 SubClassDelegate 并设置委托。问题是(当然),这个子类中不存在“委托”。有没有办法告诉编译器将我的委托“扩展”到我的子类中? (或者我在这里疯了并且错过了一些明显的事情)
我要么创建一个包装委托以使其成为正确的类型SubClass
.
class SubClass: BaseClass {
var myDelegate: SubClassDelegate? {
get { return delegate as? SubClassDelegate }
set { delegate = newValue }
}
@IBAction func onDoSomething(sender: AnyObject) {
myDelegate?.additionalSubClassDelegateMethod();
}
}
或者简单地将委托强制转换为预期类型:
(delegate as? SubClassDelegate)?.additionalSubClassDelegateMethod();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)