Delegate :

1 代理设计模式的使用我们首先需要明白三个要素

  *委托方:委托别人去执行某些操作的人(对象)

  *代理方:被委托区执行某些操作的人(对象)

  *协议:(protocol)委托方需要代理方执行的操作

    > 协议是一套标准(一堆方法的声明),只有 .h 文件。协议的定义以 @protocol 开始,以 @end 结束。

    > 协议中的方法默认是必须实现的,@required 。关键字 @optional 修饰的方法是可选的,课实现也可不实现。

2 delegate 的设计步骤

  步骤1:委托方制定一套协议(在委托方的 .h 文件中),协议中声明委托方需要代理方执行的方法(只有方法声明)

  步骤2 : 委托方声明一个 delegate 属性(assign修饰),存储代理方对象
  @property(strong,nonatomic) id<协议名>delegate

  步骤3 : 代理方需要遵循协议,并且对协议中的方法进行实现

  步骤4 : 将代理方设置为委托方的代理人(将代理方对象赋值给委托方对象的delegate属性,进行存储)

  步骤5 : 委托方在合适的时机通知代理方对象去执行相应的操作

iOS常用设计模式和机制之代理的更多相关文章

  1. iOS 常用设计模式和机制之KVO

    KVO http://blog.kyleduo.com/2014/10/20/ios_learning-kvo/ 定义: KVO:Key-Value Observing,是Foundation框架提供 ...

  2. iOS 常用设计模式和机制之 KVC

    KVC 1  key Value Coding,键值编码,是一种间接访问实例变量的方法 2  KVC 提供了一种使用字符串(key)而不是访问器方法,去访问一个对象实例变量的机制 3  KVC 常用方 ...

  3. iOS常用设计模式和机制之Block简单使用

    Block :block 实际上就是 Objective-C语言对闭包的实现 闭包(Closure):闭包就是一个函数,或者一个指向函数的指针,加上这个函数执行的非局部变量.闭包允许一个函数访问声明该 ...

  4. iOS常用设计模式:MVC、单例、代理、观察者。

    MVC 模型-视图-控制器(MVC)设计模式 MVC根据角色划分类,涉及到三个角色: Model:模型保存应用程序的数据. View:视图是模型的可视化表示以及用户交互的控件. Controller: ...

  5. IOS常用设计模式之委托模式

    对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模 ...

  6. iOS常用设计模式笔记

    一.原则 1.单一职责原则 (Single Responsiblity Principle SRP) 2.开闭原则(Open Closed Principle,OCP) 3.里氏替换原则(Liskov ...

  7. iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

    1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下 ...

  8. 代码重构 & 常用设计模式

    代码重构 重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 1  新建一个方法 ...

  9. iOS常用的设计模式

    iOS常用的设计模式有:单例模式.委托模式.观察者模式和MVC模式.下面分别简单介绍. 一:单例模式 我们常用的UIApplication.NSUserdefaults.NSNotificationC ...

随机推荐

  1. 配置rt-thread开发环境(配置系统,生成系统镜像)

    配置rt-thread开发环境 ===========Python============= 1.Python的下载地址:http://www.python.org/ftp/python/ 链接中有各 ...

  2. netstat__stat

    1."man netstat" 查看 命令"netstat"的参数和打印信息的含义 2."netstat -awp" --> ZC: ...

  3. C++基础知识之vector

    vector容器类型:vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象).vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的.vector的构造 函 ...

  4. Uiautomator ——API详解

    版权声明:本文出自carter_dream的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4921701.html 简单的例子 以一个简 ...

  5. laravel开发微信公众号1 之基本配置

    需要用到的packagist:       https://github.com/overtrue/laravel-wechat  ( 目前最优雅的laravel微信sdk) 首先安装 compose ...

  6. DEV:GridControl 筛选复选框 Checked Dropdown更改数据源

    用了DEV网站给的图: 起初,我并不知道这个圈起来的部分叫做Filter Dropdown,这个List里面的数据默认与GridControl中的数据保持一致的. 现在需要对这个FilterDropd ...

  7. PowerDesigner导出建表sql脚本

    1 按照数据库类型,切换数据库. Database-> Change Current DBMS... 2.设置保存路径和文件名称

  8. JS 百度地图导航

    上一篇文章中我们就简单的学习了HTML5 地理定位,那么今天告诉大家我在项目中遇到的一个问题吧,就是怎么实现点击一个按钮就可以调到百度地图,并且获取到你当前的位置,并且导航到指定的地方去. 不想看步骤 ...

  9. 【62测试】【状压dp】【dfs序】【线段树】

    第一题: 给出一个长度不超过100只包含'B'和'R'的字符串,将其无限重复下去. 比如,BBRB则会形成 BBRBBBRBBBRB 现在给出一个区间[l,r]询问该区间内有多少个字符'B'(区间下标 ...

  10. android 分享或者调用系统或者其他app时 应注意! startActivityForResult() 使用

    //判断是否有相应的Activity来接受intentPackageManager packageManager = getPackageManager();List<ResolveInfo&g ...