傻瓜的协议和代表

Ala*_*lan 8 delegates design-patterns protocols objective-c

我试图解决这个问题,我保证!这里有大量的信息,我仍然充斥着抽象概念的海洋!就像我小时候一样,没有人可以向我解释为什么一个国家不能只打印更多的钱并且真的很富裕.我不是因为大部分这些东西都迟钝了,但由于某种原因我无法绕过这个概念,所以如果有人可以把它拼写为"尽可能慢地和一个4岁的孩子说话",我会非常感激. !

我认为目标行动对我来说是完全合理的.这是一种允许视图与控制器通信的有用方法,而不必做很多事情.据我所知,控制器对象有效地将侦听器附加到视图对象,以便如果在该视图上发生特定事件(即按钮被按下),则它会触发控制器方法.这可能不是技术上的准确,但作为一个抽象的解释,它对我来说是有道理的.

所以顺序是:

  1. 在控制器对象中创建目标方法.
  2. 选择视图并以图形方式连接到该方法.
  3. 事件发生在该视图上,该事件从控制器触发该方法.

议定书和代表让我感到沮丧.我知道它与允许对象相互交谈有关,但我尝试写下目前为止我的(缺乏)理解并删除它,因为我认为最好不要解开我当前思路中的结,而只是擦拭板岩并重新开始.如果有人可以花一点时间来解释目的

  1. 使用委托/协议而不是目标/行动
  2. 代码的组成部分及其所在的位置
  3. 使用该过程时发生的事件序列

我会永远感激.

从对其他解释的一些评论来看,我觉得我不是唯一一个有点失落的人,所以希望这将是一般用途.非常感谢!

编辑:

好吧,我想如果我只是理解我的理解,人们可以纠正我,这可能会使这更容易.

我的示例来自Apple Docs,其中Window作为视图对象,WindowDelegate作为委托,单击关闭窗口按钮会触发"我应该关闭吗?" 给代表的消息.

代码的组成部分:Window(View)WindowDelegate(View Controller?)

  1. 声明委托可以在Window(View)的接口部分中使用的协议.
  2. 在窗口中创建委托的实例.
  3. 说明WindowDelegate通过在其界面中包含:来实现Window Protocol.(这里有点摇摇晃晃?)
  4. 在WindowDelegate(View Controller)实现部分中编写方法的必要实现.
  5. 在某个事件中,Window将使用某些信息向WindowDelegate发送消息.
  6. WindowDelegate将处理此问题并返回答案.

沿着右边的任何地方?

pmk*_*pmk -1

对于代表们,您可能会看看这个问题

对于协议,您可能需要检查此问题或查看文档

希望这可以帮助!