Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我如何知道何时使用协议和委托,以及它们是什么?(swift 4.2)_Ios_Swift_Delegates_Protocols - Fatal编程技术网

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

Ios 我如何知道何时使用协议和委托,以及它们是什么?(swift 4.2),ios,swift,delegates,protocols,Ios,Swift,Delegates,Protocols,我想知道swift中如何使用协议和委托。我是一个有6个月经验的程序员,但我仍然感到困惑。谢谢 新问题: swift中如何使用代理和协议?协议: 把协议看作一种行话。这是一个专门的词汇表,对象之间用它来交谈。协议定义了一组方法和属性,任何符合该协议的对象都保证拥有这些方法和属性 想象一下一个速食厨师。那个临时厨师懂这家餐馆的行话。我需要一个7,嗯,除了洋葱什么都要 服务员不需要知道那天晚上谁在工作。他们只是点菜,然后厨师做饭。事实上,厨师甚至不需要是人类。如果你能造出一个理解并能遵守短期烹饪协议的

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

新问题:

swift中如何使用代理和协议?

协议: 把协议看作一种行话。这是一个专门的词汇表,对象之间用它来交谈。协议定义了一组方法和属性,任何符合该协议的对象都保证拥有这些方法和属性

想象一下一个速食厨师。那个临时厨师懂这家餐馆的行话。我需要一个7,嗯,除了洋葱什么都要

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

协议就是这样的

代理使用协议,但这不是使用协议的唯一方式

代表: 委托是一个执行特定任务的对象,它保证理解特定的协议。在上面的例子中,速食厨师是餐厅的代表。你不知道委托对象是什么——你只知道它知道如何烹饪食物。你可以用一个不同的短期厨师来代替短期厨师,只要他们都符合短期厨师协议,一切工作都是完全一样的。委托通常被定义为符合协议的对象,而不是特定的类

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


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

协议是一种承诺或契约,它规定任何符合协议的引用都保证实现非可选功能。委托是将工作或功能委托给其他对象的概念。在许多情况下,协议用于描述学员预期执行的工作。UtableViewDelegate和UtableViewDataSource就是这一概念的例子