你如何在Swift中的子类上调用委托函数?

时间:2018-05-30 22:26:39

标签: swift class delegates protocols subclass

A类是代表。 B类有一个方法的协议,我可以通过调用类似 委托的东西来调用它们。?myFunc()

Version: ImageMagick 7.0.7-37 Q16 x86_64 2018-05-30 https://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: https://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP 
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc jbig jng jp2 jpeg lcms lqr ltdl lzma openexr png ps raw rsvg tiff webp x xml zlib

但现在 myFunc() 属于A类使用的另一个类(C类),但现在我希望B类调用A类中的函数&# 39; C类的实例。

怎么做的?我知道有答案,但也许我不知道该搜索什么?我希望我能写出像 delegate?.classC.myFunc() 这样的内容,但它不会让我这样做。

2 个答案:

答案 0 :(得分:2)

为了完成命令,了解其委托做什么的任何事情都不是B级的事。这是协议/委托模式的 point 。该协议隐藏了代理的实现 - 更多的是身份 - 。

作为委托的A类将通过以某种方式与其C类助手交谈来响应myFunc。也许那是它的委托,我不知道。那没关系。但是,不要改变B级对情况或谈话方式的了解。

所以,你需要在A类中编写一个函数,它将为你调用它的C类。如果A类是代表,B类应该对远端发生的事情一无所知。这是一个私人实施细节。

答案 1 :(得分:1)

协议的重点在于它使您不必指定提供服务的特定。相反,您只需指定符合协议的某个对象即可提供服务。

您只需要使ClassA和ClassB对象具有相同的委托。然后每个人都会直接给代表打电话。