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
}
}
因此,为了方便起见,我创建了一个子类,它可以充当父类(super class)委托(delegate)。然而,父类(super class)委托(delegate)中的一些方法仍然最适合在 View Controller 中实现,这意味着我不希望我的子类实现这些。
是否有更好的方式来处理这些委托(delegate),以便我可以“分担”责任?
您可以创建一个多播委托(delegate)。这样多个对象(子类,ViewController)可以是调用者对象的委托(delegate)。协议(protocol)方法是可选的,然后您可以选择哪个类将实现协议(protocol)中的哪些方法。
或者,您可以只创建 2 个协议(protocol),在调用者对象中使用 2 个委托(delegate)引用。除非有某些特定原因您想使用单一协议(protocol)。
Tôi là một lập trình viên xuất sắc, rất giỏi!