我如何知道何时使用协议和委托,它们是什么? ( swift 4.2 )

How do I know when to use protocols and delegates, and what are they? ( swift 4.2 )

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


新问题:

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

协议:

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

想象一下快餐厨师。快餐厨师知道餐厅的行话。 “我需要 #7,好吧,除了洋葱之外什么都有。”

服务员不需要知道那天晚上谁在工作。他们只是下订单,然后厨师做饭。事实上,厨师甚至不需要是人。如果你能造出一个机器人,它能理解并遵守快餐烹饪协议,并能烹饪食物,你就可以用机器人代替人类,而侍应生根本不需要改变他们的工作方式.

协议很像。

代表使用协议,但这不是他们使用的唯一方式。


代表:

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

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

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