iOS开发设计模式之代理

By | 03月01日
Advertisement
  • 代理设计模式

代理设计模式,也称“委托”,顾名思义就是委托别人去做事情

在代理模式中,一方称为委托方,另一方称为代理方。

委托方和代理方通过协议联系到一起。

当委托方想要让代理方做事情时只需向代理发送代理消息

iOS开发设计模式之代理

代理的作用:

1)对象间传递事件 :孩子告诉妈妈饿了

2)对象间传递数值 :告诉妈妈饿了的同时告诉想吃什么

代理方法中使用参数

3)为自身的属性赋值 :孩子告诉妈妈饿了同时要得到妈妈做的食物

代理方法中使用返回值

  • 代理设计模式的使用步骤
  1. 委托方:提出代理协议
@protocol AMViewDelegate <NSObject>
@optional
- (void) view:(AMView*) view detailInfoWithState:(BOOL) state;
@end

2. 委托方:添加代理对象属性

@interface AMView : UIView
@property (nonatomic, weak) id<AMAppViewDelegate> delegate;

3. 代理方:遵循代理协议

@interface ViewController() <AMAppViewDelegate>

4. 代理方:成为委托方的代理者

view.delegate = self;

5. 代理方:实现代理方法

- (void) view:(AMView*) view detailInfoWithState:(BOOL) state
{
    //...
}

6. 委托方:通过代理属性调用代理方法

- (IBAction) nameBtnClicked:(id) sender {
    if ( self.delegate && [self.delegate respondsToSelector:@selector(view:detailInfoWithState:] ) {
        [self.delegate view:self detailInfoWithState:NO];
    }
}

本文出自 “安萌” 博客,请务必保留此出处

Similar Posts:

  • 【深入浅出ios开发】使用代理进行传值

    一般在ios开发中通过segue过度进行传值,有些时候可能不行,例如两个UIviewcontroller之间相互传值.这时候我们一般通过代理来进行传值. 由于自己是C++出身,对设计模式也有所了解,这里就简单的用个实例来讲解代理模式如何通过代理进行传值. 某公司接到一个项目,于是项目经理开始写计划,然后进行软件的基本架构.这时候他发现自己一个人无法在预定的时间里完成这个软件.于是他就开始招人,招了一个程序员来写一些方法. ①项目经理让程序员做某些事情,肯定要他遵守某些准则,也就是所谓的协议. 项

  • iOS开发之协议:代理传值

    1.协议(protocol),就是使用了这个协议后,必须按照协议规定的内容来处理事情,协议中要求的方法必须实现(@optional的方法除外). protocol是一种语法,它提供了一个很方便的.实现delegate模式的机会. 定义protocol如下: @protocol ClassBDelegate<NSObject> - (void)methodOne; @optional - (void)methodTwo:(NSString *)value; @end 定义了一个ClassB的协议

  • IOS开发之协议 代理

    回顾: 1.协议 2.代理 3.程序的执行流程 1.协议:公共接口 可以在协议里面声明 一些公共的方法 只要遵守协议的类 都可以使用这些协议方法 导入协议:<协议名> 好处:节省代码量 不用重复去声明相同的方法 2.代理:委托别人去帮忙做某件事 也是一个特殊的协议 3.程序的执行流程 程序的入口是main main会根据程序的运行状态 使用代理 去调用 对应状态的方法 启动流程: 1.main程序的入口 main 2.加载完所有选项 准备启动 -> 可以在这个方法里面写 需要加载的内容(

  • iOS开发核心语言Objective C语言 —— 特有语法及设计模式

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发者,想进一步提升者.如果您对iOS开发有极高的兴趣,可以与我一起探讨iOS开发,一起学习,共同进步.如果您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在开始Objective C语言的学习,如果您遇到问题也可以与我探讨,另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦!可以新浪微博私信关注极客James,期待与您的共同学习和探讨!!由于时间有限,每天在工作

  • 浅谈iOS开发的协议(protocol)和代理(delegate)

    协议和代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的.网上的很多博文只是讲了怎么使用,并没有说的很明白.下面我谈一下我的理解. 1.你要先搞明白,协议和代理为什么会出现,也就是说它存在的意义是什么,解决了什么问题. 协议和代理是模块化开发和封装的产物. 先讲一个小故事帮助大家理解: 老王有一家餐馆,刚刚开始的时候规模很小,所以老王一个人做了所有的事情:扫地,做菜,迎宾,上菜,收银.但是后面随着规模的扩大,老王一个人就吃不消了,忙死也忙不过来了.这时候怎么办?大家都很

  • iOS开发之单例设计模式

    本文将从四个方面对iOS开发中的单例设计模式进行讲解: 一.什么是单例设计模式 二.我们为什么要用单例设计模式 三.单例设计模式的基本用法 四.自定义单例设计模式代码的封装 一.什么是单例设计模式 所谓单例,即是单个的实例化对象,保证一个类有且仅有一个实例.通常情况下,当我们对一个类实例化时(如:alloc.new等),并不能保证每次实例化的对象是唯一的实例.那么为了保证该类可在多次实例化的过程中保证内存地址不变,就需要引入单例设计模式. 二.我们为什么要用单例设计模式 1.Singleton

  • iOS开发——OC篇&amp;消息传递机制(KVO/NOtification/Block/代理/Target-Action)

    iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Foundation Framework的,不过本文中还介绍了一些超出Foundation Framework(KVO和Notification)范围的一些消息传递机制,另外还介绍了delegation,block和target- action. 大多数情况下,消息传递该使用什么机制,是很明确的了,当然了,在某

  • 详解iOS App设计模式开发中对于享元模式的运用

    享元模式的概念 在面向对象软件设计中,利用公共对象不仅能节省资源还能提高性能.共享的对象只能提供某些内在的信息,而不能用来识别对象.专门用于设计可共享对象的一种设计模式叫做享元模式(Flyweight pattern). 实现享元模式需要两个关键组件,通常是可共享的享元对象和保存他们的池.某种中央对象维护这个池,并从它返回适当的实例. 运用共享技术有效地支持大量细粒度的对象. 公共交通(如公共汽车)已有一百多年的历史了.大量去往相同方向的乘客可以分担保有和经营车辆(如公共汽车)的费用.公共汽车有

  • iOS开发——OC篇&amp;amp;消息传递机制(KVO/NOtification/Block/代理/Target-Action)

    iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Foundation Framework的,不过本文中还介绍了一些超出Foundation Framework(KVO和Notification)范围的一些消息传递机制,另外还介绍了delegation,block和target- action. 大多数情况下,消息传递该使用什么机制,是很明确的了,当然了,在某

  • 设计模式之单一职责原则(iOS开发,代码用Objective-C展示)

    单一职责原则:就一个类而言,应该只有一个引起它变化的原因. 在iOS开发中,我们会很自然的给一个类添加各种各样的功能,比如随便写一个简单的应用程序,一般都会生成一个viewController类,于是我们将各种各样的代码,商业运算的算法.http请求的参数(params)封装.使用FMDB.coreData时的数据库访问语句都放在这个类里面,这就意味着,无论任何需求变化,都要来修改viewController这个类,这其实是很糟糕的,维护麻烦.复用不可能.缺乏灵活性. 也许上面说的略微夸张,因为

Tags: