如何在 Swift 中的子类上调用委托函数?
How do you call a delegate's function on a subclass in Swift?
Class A是代表。
Class B 有一个方法协议,我可以简单地通过调用类似 delegate?.myFunc()[ 来调用它们=12=]
protocol ClassBDelegate: class {
func myFunc()
}
class Class B {
weak var delegate: ClassBDelegate?
delegate?.myFunc()
}
但是现在 myFunc() 在另一个 class (Class C) 中 Class A 使用,但现在我希望 Class B 在 Class A 的 Class C 实例中调用一个函数。
这是怎么做到的?我知道有答案,但也许我不知道要搜索什么?我希望我可以写类似 delegate?.classC.myFunc() 的东西,但它不允许我这样做。
class B 无权了解其代表 为完成其命令所做的事情。那就是协议/委托模式的点。该协议隐藏了委托的实现——不仅如此,还隐藏了委托的身份。
作为代理的 class A 将通过以某种方式与其 class C 助手交谈来响应 myFunc
。也许那是 its 代表,我不知道。那没关系。但不要改变 class B 对情况的了解或说话方式。
因此,您需要在 class A 中编写一个函数 ,它将为您调用其 class C。 Class 如果 class A 是代表,B 应该对远端发生的事情一无所知。这是一个私有的实现细节。
协议的全部意义在于它使您不必指定提供服务的特定 class。相反,您只需指定一些符合协议的对象提供服务。
您只需要使您的 ClassA 和 ClassB 对象具有相同的委托。然后每一个直接调用delegate。
Class A是代表。 Class B 有一个方法协议,我可以简单地通过调用类似 delegate?.myFunc()[ 来调用它们=12=]
protocol ClassBDelegate: class {
func myFunc()
}
class Class B {
weak var delegate: ClassBDelegate?
delegate?.myFunc()
}
但是现在 myFunc() 在另一个 class (Class C) 中 Class A 使用,但现在我希望 Class B 在 Class A 的 Class C 实例中调用一个函数。
这是怎么做到的?我知道有答案,但也许我不知道要搜索什么?我希望我可以写类似 delegate?.classC.myFunc() 的东西,但它不允许我这样做。
class B 无权了解其代表 为完成其命令所做的事情。那就是协议/委托模式的点。该协议隐藏了委托的实现——不仅如此,还隐藏了委托的身份。
作为代理的 class A 将通过以某种方式与其 class C 助手交谈来响应 myFunc
。也许那是 its 代表,我不知道。那没关系。但不要改变 class B 对情况的了解或说话方式。
因此,您需要在 class A 中编写一个函数 ,它将为您调用其 class C。 Class 如果 class A 是代表,B 应该对远端发生的事情一无所知。这是一个私有的实现细节。
协议的全部意义在于它使您不必指定提供服务的特定 class。相反,您只需指定一些符合协议的对象提供服务。
您只需要使您的 ClassA 和 ClassB 对象具有相同的委托。然后每一个直接调用delegate。