class SuperClass
{
var delegate : SuperClassDelegate?
}
protocol SuperClassDelegate
{
func doFirstAction ()
func doSecondAction ()
}
class SubClass : SuperClass , SuperClassDelegate
{
override init ()
{
super.init()
self.delegate = self
}
func doFirstAction () {}
}
class MyViewController : UIViewController
{
override func viewDidLoad ()
{
let c : SubClass = SubClass()
}
func doSecondAction ()
{
// I want to handle this action in the ViewController
}
}
所以我创建了一个子类,为方便起见,它可以充当超类委托。但是,超类委托中的一些方法仍然在视图控制器中最合适的实现,这意味着我不希望我的子类实现这些。
我是否有更好的方式来处理这些代表,以便我可以'分担'责任?
答案 0 :(得分:1)
您可以创建多播委托。这样,多个对象(子类,ViewController)可以是来自调用者对象的委托。协议方法是可选的,然后您可以选择哪个类将实现协议中的哪些方法。
或者,您可以在调用者对象中创建2个具有2个委托引用的协议。除非有某些特定原因要使用单一协议。