gpt4 book ai didi

ios - 是否可以共享委托(delegate),或将协议(protocol)的方法重新委托(delegate)给另一个委托(delegate)?

转载 作者:行者123 更新时间:2023-11-28 06:28:38 28 4
gpt4 key购买 nike

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)。

关于ios - 是否可以共享委托(delegate),或将协议(protocol)的方法重新委托(delegate)给另一个委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com