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 ...
随机推荐
- 利用RNAseq数据做聚类分析
library(ConsensusClusterPlus)library(factoextra)library(cluster)library(NbClust)# 读入数据data = read.ta ...
- XMLHttpRequest 加载进度
XMLHttpRequest 相关资料请移步这里直接查看,我这里就不在赘述: https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpReque ...
- java实现LIS算法,出操队形问题
假设有序列:2,1,3,5,求一个最长上升子序列就是2,3,5或者1,3,5,长度都为3. LIS算法的思想是: 设存在序列a. ① 如果只有一个元素,那么最长上升子序列的长度为1: ② 如果有两个元 ...
- Linux Socket编程(不限Linux)
"一切皆Socket!" 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. --有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信 ...
- yii2-basic后台管理功能开发之二:创建CRUD增删改查
昨天实现了后台模板的嵌套,今天我们可以试着创建CRUD模型啦 刚开始的应该都是“套用”,不再打算细说,只把关键的地方指出来. CRUD即数据库增删改查操作.可以理解为yii2为我们做了一个组件,来实现 ...
- WPF:ListView 分页
布局MainWindow.xaml <ListView Name="list_Reg" ItemsSource="{Binding Source={StaticRe ...
- juery 实现下拉框多选 jquery-multiselect
效果: 除了jquery,需要引用的样式和js文件: <link rel="stylesheet" type="text/css" href=" ...
- redis初步入门
http://blog.csdn.net/u014419512/article/details/25693425 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 环境 安装 ...
- w3school一个学习编程的好地方!
http://www.w3school.com.cn/index.html 每天过来学习几篇.
- Android - ViewPager+Fragment初始化问题
Android应用开发中,经常会用到ViewPager + Fragment,虽然效果不错,但随之而来的还有一些问题,下面就说说其中的初始化问题. ViewPager初始化时会预加载前后的2个页面,即 ...