gpt4 book ai didi

swift - Swift 中的委托(delegate),我们需要它们吗?

转载 作者:行者123 更新时间:2023-11-30 10:08:42 24 4
gpt4 key购买 nike

我是 C# 出身,请问 Swift 中的委托(delegate)(不是 C# 版本)与 C# 中的接口(interface)基本相同,这样说对吗?

我看到有关在 Swift 中使用委托(delegate)的教程,用于将数据从一个 View Controller 传递到另一个 View Controller 。

我的问题是,难道不能简单地向 swift 类添加一个函数,然后将 View Controller 从中分类吗?喜欢

func Sh​​owName(名称:字符串)

并让第一个 View Controller 使用它调用第二个 Controller 函数(位于第二个 Controller 的子类中)。

最佳答案

从技术上来说,它是 Swift protocols类似于 C# 接口(interface)。协议(protocol)实际上是类将实现哪些方法/属性的契约。与 C# 接口(interface)一样,它可以用于委托(delegate)模式,但它也有更广泛的应用。

但协议(protocol)在委托(delegate)模式中发挥着核心作用(请参阅《Swift 语言》中的 Delegation 讨论或 Cocoa 核心能力中的 ProtocolDelegation 讨论),其中一个对象可以指定另一个与其通信的对象。该协议(protocol)简单地概述了对象对其委托(delegate)对象的要求的精确性质,以及它的委托(delegate)支持哪些可选接口(interface)。

回答您的问题时,当您有委托(delegate)时,从技术上讲您不需要使用协议(protocol),但最佳实践是这样做。它使两个类之间的正式契约非常明确,同时保持两个类松散耦合。

虽然可能需要额外花费两到三分钟来实现该协议(protocol),但它几乎总是值得付出努力。它将简化您将来对这些类的维护。因此,虽然您在技术上不需要为您的委托(delegate)使用协议(protocol)和/或在对象之间交换信息,但我认为如果您这样做,您会感谢自己。

关于swift - Swift 中的委托(delegate),我们需要它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34459033/

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