总结一下:

delegate是一个方式,程序组成单元之间分工的一种协调思想

protocal 这个东西不能单独说,要与它相关的两个主要东西一起说,一个是 委托者 通常是VIEW, 一个是被委托者 通常是某个CONTROLLER

它主要用来预先定义出来一个协议,可以理解为TCP/IP协议的思想,大家即 服务端、客户端 都按这个TCP/IP的协议规范来 沟通。

既然把它叫一个协议,那它一定有一个明确具体的定义,定义它有什么功能,即行为,或叫干什么事。

这个所谓的干什么事,就是预先定义出来,给委托者调用(由被委托者实现,协议只是定义一个行为的名字和相应的参数及类型),定义也定义好了。

下面就是,被委托者FOLLOW这个协议,然后实现它。委托者就可以设置自己的委托人是人,就是设置被委托人的引用到自己的DELEGATE属性上。

anyController.delegate = self.  SELF这个类里去实现协议方法。

那么委托者有了具体的委托人了,就可以有效的进行调用 这个协议里预先定义过的方法了。

委托者在类定义的头文件中也需要声明好一个 DELEGATE的属性 (@PROPERTY ID<PROTOACALNAME> delegate 这种形式)。

那这样一个有机的配合机制就出来了,这几者之间的一个明确的协调工作方式就完成了。

即,VIEW & CONTROLLER 双方都遵守了 PROTOCAL协议,如同服务端 与 客户端都 遵循实现了 TCP/IP协议

//-----------------------------------------------------------------------------------------------------------------Concolusion

PROTOCAL 用来定义预期的行为 @protocal { -(void)method_name;} @end

VIEW用来调用PROTOCAL定义的行为, 调用形式即 [view.delegate method_name_defined_in_protoal];

CONTROLLER用来实现PROTOCAL定义的行为,且,CONTROLLER被设置为VIEW的DELEGATE。即传引用给CONTROLLER的DELEGATE属性。 view.delegate = self;

会让整个程序模块功能之间的协作很清晰,它不是唯一的好方式,但确是一种好方式。

IOS Delegate & protocal的更多相关文章

  1. iOS delegate, 代理/委托与协议.

    之前知知道iOS协议怎么写, 以为真的跟特么java接口一样, 后来发现完全不是. 首先, 说说应用场景, 就是当你要用一个程序类, 或者说逻辑类, 去控制一个storyboard里面的label, ...

  2. [iOS]delegate和protocol

    转自:http://haoxiang.org/2011/08/ios-delegate-and-protocol/ 今天上班和同事讨论工程怎么组织的时候涉及到这个话题.iOS开发上对delegate使 ...

  3. iOS delegate

    有两个scene,分别为Scene A和Scene B.Scene A上有一个UIButton(Button A)和一个UILable(Lable A):Scene B上有一个UITextFiled( ...

  4. ios delegate你必须知道的事情

    在我们的class中设计delegate的时候,我们通常会有几个注意事项. 假设我的class叫做MyClass,那我们可能会有定义一个MyClassDelegate这个protocol当作我的del ...

  5. ios delegate, block, NSNotification用法

    ios中实现callback可以通过两种方法,委托和NSNotification 委托的话是一对一的关系,例如一个UIViewController里有一个tableView, 将该viewContro ...

  6. ios delegate 代理模式 观察者模式 不同视图间的通信

    delegate,在ios中比比皆是,NSURLConnection(网络请求有),tableView, connectionView,等系统自带 的常见代理.甚至,自己写代码的时候,随意间敲打出了p ...

  7. iOS 之美:iOS Delegate 使用五步曲

    在iOS 开发中, 搞清楚Delegate 是需要花些时间的. Delegate 本来是软件架构设计的一种理念.对于像手机这样一个有限的设备,我们需要充分考虑到:内存要尽量省着用: 视图之间的关系要清 ...

  8. 转:ios delegate

    首先,大家应该都明白的是委托是协议的一种,顾名思义,就是委托他人帮自己去做什么事.也就是当自己做什么事情不方便的时候,就可以建立一个委托,这样就可以委托他人帮自己去实现什么方法. 其次,我简单的总结了 ...

  9. ios delegate 使用注意 assign,weak

    今天一个同事写代码,把一个delegate对象设定成了assign类型属性,没有用weak,就是delegate对象释放后,不会把delegate指针自动设定为nil,把对象的delegate设定成了 ...

随机推荐

  1. Weblogic安装

    1.下载wls_121200.jar, 2.输入cnd打开命令提示 3.f:进入F盘 4.Java -version 验证是否配置Java环境, 5.echo %path% 查看环境变量 6.set ...

  2. servlet--页面自刷新

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  3. TreeView

    添加项目 TreeView1.Items.Add(nil,'ABC');       删除选中的节点 TreeView1.Selected.Delete;   删除鼠标右键选中的节点   var    ...

  4. Cts框架解析(12)-ITargetPreparer

    測试开启前的设备系统准备工作. 接口 /* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Ap ...

  5. 【读jQuery源码有感系列一】callee

    <script type="text/javascript"> /*调用自身*/ function calleeDemo() { try{ } catch (error ...

  6. shared_ptr的简单实现

    前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针 ...

  7. RDDTest.scala

    /** * Created by root on 9/7/15. */ import org.apache.spark.SparkContext import org.apache.spark.Spa ...

  8. 根据Entity Framework6.X 数据生成代码(仅获取表名)

    近来学习ASP.NET MVC ,一直在看韩迎龙(Kencery)的ASP.NET MVC+EF框架+EasyUI实现权限管理.在第九节(TT模板的学习)卡住了,作者使用EF5.0做数据源,而我使用的 ...

  9. CentOS 6.4 安装 thrift-0.9.3

    前言 为了能给.NET的程序提供HBase访问接口需要在Hadoop/Spark集群上安装Thrift Thrift介绍 Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强 ...

  10. Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)

    1. Future接口简介 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API ...