大话设计模式--委托--IOS
最近看了一些关于IOS委托的文章,看完之后,感觉不大好。
引文:
委托delegation是一种简单但是功能强大的设计模式,它的功能是程序中一个对象代表另一个对象,或者一个对象与另外一个对象协同工作。委托对象保留了另外一个对象的引用,即就是委托,以及在合适的时候发送消息给委托。消息通知事件的委托方法,委托对象将要处理或已经处理。委托可能通过更新本身或者本应用的其他对象的状态或者外观来对消息进行响应,在某些情况下委托也可能返回值,从而影响即将发生事件的处理方式。委托模式的主要价值是让你通过一个中心对象,简单的自定义某些对象的行为。
这种描述,明显是给那种已经懂的人看的。
我相信,新手看了之后,都会不大理解。
So,我总结一下,看是否对大家有帮助:
委托共涉及到三个部分:协议(委托)、委托的类、实现委托的类。
1.协议,不多解释,例如:
@protocol MyViewDelegate <NSObject> - (void) textEnter:(NSString*) text; @end
2.委托的类
假设该类为ShengMingViewController
先声明一个属性(供外部调用),它遵循上面的协议:
@property (assign, nonatomic) id<MyViewDelegate> myDelegate;
再调用协议中的方法:
//在一个点击事件(根据功能需要)中触发协议中的方法
- (IBAction)saveButtonClicked:(id)sender {
//是否有实现的对象
if([myDelegate respondsToSelector:@selector(textEntered:)])
{
//如果有,则调用它的实现
[myDelegate textEntered:textEntered.text];
} //界面跳转,跟代理没有毛线关系
[self dismissModalViewControllerAnimated:YES];
}
上面代码和注释已经一目了然,不多解释。
3.实现委托的类
遵循协议
@interface ShiXianViewController : UIViewController<MyViewDelegate>
委托的类对象
ShengMingViewController *vc = [[ShengMingViewController alloc] init];
vc.myDelegete = self;
实现协议中的方法
-(void) textEntered:(NSString *)text{
}
大话设计模式--委托--IOS的更多相关文章
- <大话设计模式>笔记
读完了<大话设计模式>这本书,收获很多,对程序设计有了很多新的理解.将每章模式的大概要点做了些笔记以备查阅,一些设计模式书读完也对其了解得不是很透彻,需要以后在实践中来不断地加深理解吧.读 ...
- 大话设计模式--观察者模式 Observer -- C++ 实现实例
大话设计模式--1.观察者模式: 定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有的 观察者对象,使他们能够自动更新自己. 使用场合: 当一 ...
- 大话设计模式C++版——装饰模式
女人常说男人喜新厌旧,只见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,非常适合去古代当老公(现代是不行的,因为只能娶一个老婆了).装饰模式的本质是每一个 ...
- 大话设计模式C++版——观察者模式
观察者模式是一种类似于消息分发的模式,用于一个任务需要被多个对象监听的场景,或者成员对象需要反向通知类对象的情况,是一种很有用的设计模式. 这里以大话设计模式中的例子为例,办公室员工A.B.C在 ...
- 大话设计模式C++版——代理模式
本篇开始前先发个福利,程杰的<大话设计模式>一书高清电子版(带目录)已上传至CSDN,免积分下载. 下载地址:http://download.csdn.net/detail/gufeng9 ...
- 大话设计模式C++版——工厂模式在COM中的典型应用
上篇<大话设计模式C++版——抽象工厂模式>中,我们拯救世界未遂,留下小小的遗憾,本篇中我们将给出一个解决方案——COM组件技术,同时也顺便扯扯工厂模式在COM组件技术中的应用. 工厂模式 ...
- 大话设计模式C++版——抽象工厂模式
前面说过,简单工厂模式是最基础的一种设计模式,那以工厂命名的设计模式就是23种设计模式中最多的一种,他们一脉相承,一步一步进化而来,这里就是其中的最后一种——抽象工厂模式(Abstract Facto ...
- 大话设计模式C++版——工厂方法模式
工厂方法模式是以简单工厂模式为基础的,如果未了解简单工厂模式的同学可先浏览<大话设计模式C++版——简单工厂模式>.在简单工厂模式中,提到过简单工厂模式的缺陷,即违背了开发—封闭原则,其主 ...
- 大话设计模式C++版——表驱动法改造简单工厂
上回<大话设计模式C++版——简单工厂模式>中指出了简单工厂模式的缺陷,即违背了开发—封闭原则,其主要原因是由于switch的判断结构的使用,使修改或添加新的对象时需要改动简单工厂类的代码 ...
随机推荐
- Linux查看端口被哪个进程占用
netstat -lnp|awk 'BEGIN{prt=":443$"}{if ($4 ~ prt) print $0}' 查看443端口
- 鉴客 C# 抓取页面(带认证)
1. [代码][C#]代码 01 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(""); 02 re ...
- CGI接口原理及实现(转载)
原文:http://blog.csdn.net/duola_rain/article/details/15812585 CGI接口原理及实现(2012-12-7 Over) 1.CGI定义: CGI( ...
- CodeForces 158B Taxi(贪心)
贪心,注意优先级,4单独,3与1先匹配,2与2匹配(注意判断2有没有剩下),然后2与两个1匹配,最后4个1匹配就可以了. #include<iostream> #include<cs ...
- hrbustoj 2130 一笔画(状态压缩)
基础状态压缩 转移方程为 dp[j][i] = min(dp[j][i],dp[k][i^(1<<j)] + dis[k][j]); #include<iostream> #i ...
- 转:Selenium的延迟等待
Selenium的延迟等待分为 显式等待(Explicit Wait) & 隐式等待(Implicit Wait). 1.显式等待 显式等待,就是明确的要等到某个元素的出现或者是某个元素的可点 ...
- Ubuntu 12.04 中文输入法
Ubuntu 12.04 中文输入法 [日期:2012-07-28] 来源:Linux社区 作者:lqhbupt [字体:大 中 小] Ubuntu上的输入法主要有小小输入平台(支持拼音/二笔/ ...
- Python多进程并发(multiprocessing)用法实例详解
http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...
- 在Ubuntu 14.04 64bit上安装StarUML 2.5版本
1,在“http://staruml.io/”下载: 2,sudo dpkg -i StarUML-v2.5.0-64-bit.deb安装. 3,注册 .在help中输入.name:maxiongyi ...
- JavaScript运行原理解析
原文:1.http://blog.csdn.net/liaodehong/article/details/50488098 2.Stack的三种含义 (阮一峰) 3. http://lib.csdn. ...