iOS---代理设计模式
2015-08-16 12:09
447 查看
代理设计模式
今天说的主要内容
什么是代理设计模式(这里主要是利用OC来实现代理设计模式)简单来讲,代理就是实现消息传递的,当然与此同时我们还可以选择通知,KVO,block来实现这一过程,
什么时候使用代理设计模式
当然就是在需要完成信息传递的时候,就去使用。那么,为什么不去使用代理而不去使用通知或KVO呢?这是一个比较具体的问题,可以参考下面的(代理,通知,KVO的优缺点)代理,通知,KVO的优缺点
怎样写一个代理设计模式
1. 你要明确你的协议名称,一般来讲名称都是:控件类名 + Delegate 2. 代理方法中一般都是声明为@optional(程序默认情况下是@required) 3. 代理方法名一般以控件开头 4. 代理方法至少有一个参数
那么现在我们举个例子
这个是利用代理实现传值的Blog那么举个例子,来个保姆和婴儿之间是怎样利用代理协议来实现一个简单的找过过程吧。啥都不说,然后我们上代码。 在写例子之前,我们有一点需要明确,谁是谁的代理。接下来我们要毫不犹豫的上代码,首先,我们创建一个
婴儿类,继承自
NSObject,接下来在.h文件中创建下面的代码
#import <Foundation/Foundation.h> @class Baby; // 定义一份代理协议 @protocol BabyDelegate <NSObject> - (void)babyWantEat:(Baby *)baby; - (void)babyWantSleep:(Baby *)baby; @end @interface Baby : NSObject /** 吃了多少东西 */ @property (nonatomic, assign) int food; /** 睡意 */ @property (nonatomic, assign) int sleep; /** 饿了 */ - (void)wantEat; /** 困了 */ - (void)wantSleep; /** 代理对象 */ @property (nonatomic, strong) id<BabyDelegate> delegate; @end接下来是.m文件中创建下面的文件
#import "Baby.h" @implementation Baby - (void)wantEat { NSLog(@"婴儿想吃东西"); // 通知保姆喂婴儿 [self.delegate babyWantEat:self]; } - (void)wantSleep { NSLog(@"婴儿想睡觉"); // 通知保姆哄婴儿睡觉 [self.delegate babyWantSleep:self]; } @end下面创建一个
保姆类同样继承自
NSObject,下面是.h文件中的代码
#import <Foundation/Foundation.h> @protocol BabyDelegate; @interface Nurse : NSObject <BabyDelegate> @end接下来是.m文件中保姆需要在什么时候做什么事情,这个还是很有必要的,
#import "Nurse.h" #import "Baby.h" @implementation Nurse - (void)babyWantEat:(Baby *)baby { baby.food += 20; NSLog(@"Nurse喂婴儿吃东西--现在的食量是%d", baby.food); } - (void)babyWantSleep:(Baby *)baby { baby.sleep += 20; NSLog(@"Nurse哄婴儿睡觉--现在的睡意是%d", baby.sleep); } @end到这里,一个基本的代理就已经完成了。
相关文章推荐
- 关于iOS中MVC和MVVM的一些思考
- iOS-英雄联盟人物展示
- iOS真机调试
- ios autoresizingMask属性的研究
- IOS拉伸之底盖设置
- iOS中nil,Nil,NULL的区别
- Mac&iOS Socket编程
- 中文 iOS/Mac 开发博客列表
- iOS应用中增加emoji表情输入功能
- IOS开发之----详解在IOS后台执行
- IOS 开发:绘制像素到屏幕
- IOS之constraints
- IOS实现弹出菜单效果MenuViewController(背景 景深 弹出菜单)
- iOS 开发 格式化日期时间
- ios开发property详解
- iOS基础常用控件简介
- ios8新特性today widget开发
- ios移动开发博客网址收藏
- iOS概念入门学习-OC-@property关键字
- iOS开发-assign、retain、copy、strong、weak的区别