A 类是委托(delegate)。 B 类有一个带有方法的协议(protocol),我可以简单地通过调用类似 delegate?.myFunc()
的方法来调用它们protocol ClassBDelegate: class {
func myFunc()
}
class Class B {
weak var delegate: ClassBDelegate?
delegate?.myFunc()
}
但是现在 myFunc() 在 A 类使用的另一个类(C 类)中,但现在我希望 B 类调用 A 类实例中的函数C类。
这是怎么做到的?我知道有答案,但也许我不知道要搜索什么?我希望我可以写类似 delegate?.classC.myFunc() 的东西,但它不允许我这样做。
最佳答案
B 类无权了解其委托(delegate)人做什么 以完成其命令。这就是协议(protocol)/委托(delegate)模式的点。该协议(protocol)隐藏了委托(delegate)的实现——不仅如此,还隐藏了委托(delegate)的身份。
A 类作为委托(delegate),将通过以某种方式与其 C 类助手对话来响应 myFunc
。也许那是它的委托(delegate),我不知道。那没关系。但是不要改变 B 级对情况的了解或它说话的方式。
因此,您需要在类 A 中编写一个函数 来为您调用其类 C。如果 A 类是委托(delegate),B 类应该对远端发生的事情一无所知。这是一个私有(private)的实现细节。
关于swift - 你如何在 Swift 中调用子类的委托(delegate)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50614156/