iOS常用设计模式和机制之代理
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常用设计模式和机制之代理的更多相关文章
- iOS 常用设计模式和机制之KVO
KVO http://blog.kyleduo.com/2014/10/20/ios_learning-kvo/ 定义: KVO:Key-Value Observing,是Foundation框架提供 ...
- iOS 常用设计模式和机制之 KVC
KVC 1 key Value Coding,键值编码,是一种间接访问实例变量的方法 2 KVC 提供了一种使用字符串(key)而不是访问器方法,去访问一个对象实例变量的机制 3 KVC 常用方 ...
- iOS常用设计模式和机制之Block简单使用
Block :block 实际上就是 Objective-C语言对闭包的实现 闭包(Closure):闭包就是一个函数,或者一个指向函数的指针,加上这个函数执行的非局部变量.闭包允许一个函数访问声明该 ...
- iOS常用设计模式:MVC、单例、代理、观察者。
MVC 模型-视图-控制器(MVC)设计模式 MVC根据角色划分类,涉及到三个角色: Model:模型保存应用程序的数据. View:视图是模型的可视化表示以及用户交互的控件. Controller: ...
- IOS常用设计模式之委托模式
对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模 ...
- iOS常用设计模式笔记
一.原则 1.单一职责原则 (Single Responsiblity Principle SRP) 2.开闭原则(Open Closed Principle,OCP) 3.里氏替换原则(Liskov ...
- iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下 ...
- 代码重构 & 常用设计模式
代码重构 重构目的 相同的代码最好只出现一次 主次方法 主方法 只包含实现完整逻辑的子方法 思维清楚,便于阅读 次方法 实现具体逻辑功能 测试通过后,后续几乎不用维护 重构的步骤 1 新建一个方法 ...
- iOS常用的设计模式
iOS常用的设计模式有:单例模式.委托模式.观察者模式和MVC模式.下面分别简单介绍. 一:单例模式 我们常用的UIApplication.NSUserdefaults.NSNotificationC ...
随机推荐
- consul笔记-集群加入的问题
加入集群的问题 1 只有2个server的时候,一个挂掉,不会选举出新的leader. 2 使用 -bootstrap 可以直接启动为leader,这和-bootstrap-expect 是有区别的 ...
- jquery总结02-样式和属性
.attr() .removeAttr() 设置属性和移除属性,里面可以是属性,属性值 ,只有属性名时只获取第一个蒜素的属性值 .html() .text() .val() html 获取包括标签 ...
- 怎样去除ul li a标签文字下的下划线
这个主要是text-decoration属性,颜色的话就是普通的了 <style> ul li a{ text-decoration:none; } ul li a { color: ...
- datatables设置解析
条信息" "sSearch":"搜索" 基本的命令 aaSorting:参数是个数组 [[],[]]单独定义每一列的排序方式 aaSortingFi ...
- 简单回忆一下JavaScript中的数据类型
说到JavaScript,大家都应该知道,它是一门脚本语言,也是一门弱类型语言,也是一门解析型的语言,同时也是一门动态类型的语言. 很好,至于JavaScript中数据类型.其分为基本数据类型和复杂数 ...
- Android DisplayMetrics类获取屏幕大小
DisplayMetrics public class DisplayMetrics extends Object java.lang.Object ↳ android.util.Disp ...
- PetShop的系统架构设计
<解剖PetShop>系列 一.PetShop的系统架构设计 http://www.cnblogs.com/wayfarer/archive/2007/03/23/375382.html ...
- Linux 下 git连接github的使用
1.安装git sudo apt-get install git 2.创建github帐号 3.Linux创建SSH密钥: ssh-keygen //一直默认 4.将公钥加入到Github账户信息A ...
- 数据包与IPTABLE关系
#数据包传输 以本地为目标 -------------------------------------------------------------------------------------- ...
- ios基础篇(十一)——UINavgationController的使用(二)页面切换
上篇说到了添加UIBarButtonItem,接下来说说界面切换: 1.首先我们在刚才的RootViewController中添加一个按钮用来实现跳转: 打开RootViewController.m( ...