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模板配置参数值示例
参看https://github.com/hashicorp/consul-template#examples // This is the address of the Consul agent. ...
- Flex 学习笔记 ComboBox内容框宽度
如何设置ComboBox下拉选项框的宽度呢 左边下拉框发现字符太长了 属性里也找不到相关宽度可以设置,解决如下 <!--添加open事件 打开下拉选项框时设置--> <s:Com ...
- Android之alertDialog、ProgressDialog
一.alertDialog 置顶于所有控件之上的,可以屏蔽其他控件的交互能力.通过AlertDialog.Builder创建一个AlertDialog,并通过setTittle(),setMesseg ...
- CSS 3 动画2D
动画分为两种,1,逐帧动画 组成动画的每一个画面就是一帧 2,关键帧动画,确定关键帧电脑会自动过度 动画中如果遇到不兼容的问题也是要加前缀 @-webkit-keyframes规则 @-webk ...
- windows目录选择 文件选择 文件保存对话框
打开文件对话框 const char pszFilter[] = _T("EXE File (*.txt)|*.txt|All Files (*.*)|*.*||"); CFile ...
- 【linux】linux下yum安装后Apache、php、mysql默认安装路径
原文:http://blog.csdn.NET/u010175124/article/details/27322757apache:如果采用RPM包安装,安装路径应在 /etc/httpd目录下apa ...
- mysql查询结果输出到文件
mysql查询结果导出/输出/写入到文件 方法一: 直接执行命令: mysql> select count(1) from table into outfile '/tmp/test.xls' ...
- 导出Excel 有身份证时注意
if (this.GridView1.Rows.Count != 0) { HttpContext.Current.Response.Clear() ...
- 常见JAVA框架
Spring Framework [Java开源JEE框架] Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不 ...
- css —— 图片环绕+首行缩进
1.利用css实现图片环绕文字的效果: 只需要给img标签设置float:left/right即可: 2.实现上段文字首行缩进两个字的效果: 使用 text-indent: 2em;即可(em为相对单 ...