【问题标题】:How do I know when to use protocols and delegates, and what are they? ( swift 4.2 ) [closed]我如何知道何时使用协议和委托,它们是什么? (迅速4.2)[关闭]
【发布时间】:2018-12-26 00:17:28
【问题描述】:

我想知道如何在 swift 中使用协议和委托。我是一位经验丰富的程序员(大约 6 个月的经验),但我仍然感到困惑。谢谢!


新问题:

swift 中如何使用委托和协议?

【问题讨论】:

  • 协议是一个“承诺”或“合同”,它声明任何符合协议的引用都保证实现(非可选)功能。委托是一个概念,其中工作或功能被“委托”给其他对象。在许多情况下,协议用于描述委托人应该执行的工作。 UITableViewDelegateUITableViewDataSource 之类的东西是这个概念的(某种)例子

标签: ios swift delegates protocols


【解决方案1】:

协议:

将协议视为行话。这是对象用来相互交谈的专门词汇。协议定义了一组方法和属性,任何“符合”该协议的对象都保证具有这些方法和属性。

想象一下一个快餐厨师。短期订单厨师知道餐厅的行话。 “我需要 7 号,嗯,除了洋葱以外的所有东西。”

服务员不需要知道当晚谁在工作。他们只是下订单,厨师做饭。事实上,厨师甚至不需要是人。如果你能制造一个理解并遵循短期烹饪协议的机器人,并且可以烹饪食物,你就可以用机器人代替人类,服务员根本不需要改变他们的工作方式.

协议非常类似。

委托使用协议,但这不是它们的唯一使用方式。


代表:

委托是执行特定工作的对象,并且可以保证理解特定协议。在上面的示例中,短期厨师是餐厅的代表。您不知道委托对象是什么 - 您只知道它知道如何烹饪食物。您可以用不同的短期厨师替换短期厨师,只要它们都符合短期厨师协议,一切都会完全一样。 (委托通常被定义为符合协议的对象,而不是特定的类。)

委托也可以是一个对象,用于自定义另一个对象的行为。例如,对于UITableViews,委托执行诸如指定单元格的行高、确定可以选择哪些单元格、处理选择操作、提供页眉/页脚视图等操作。

您经常提供委托来自定义复杂 Apple UI 对象(如表格视图)的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多