您的位置:首页 > 移动开发 > IOS开发

iOS之代理设计模式

2016-03-08 12:15 260 查看
代理设计模式:其实就是自己的事让其他类去完成。还可用于传值。

下面就以保姆照看baby的例子解析代理的基本用法。

首先创建以讴歌baby类

//
//  Baby.h
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import <Foundation/Foundation.h>
@protocol BabyDelegate<NSObject>
-(void)drinkWater;
-(void)eatFood;
@end
@interface Baby : NSObject
/**
*  代理为遵守协议的任何对象
*/
@property(nonatomic ,strong)id<BabyDelegate>delegate;
-(void)babyHundry;
-(void)babyWantDrinkWeater;
@end


//
//  Baby.m
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import "Baby.h"

@implementation Baby
-(void)babyHundry{
NSLog(@"我饿了");
[self.delegate eatFood];//找代理
}
-(void)babyWantDrinkWeater{
NSLog(@"我渴了");
[self.delegate drinkWater];//找代理
}

@end
创建一个保姆类作为婴儿的代理

//
//  ChidrenNurse.h
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Baby.h"
@interface ChidrenNurse : NSObject<BabyDelegate>

@end


实现文件里面实现协议方法

//
//  ChidrenNurse.m
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import "ChidrenNurse.h"

@implementation ChidrenNurse
<pre name="code" class="objc" style="color: rgb(76, 191, 87); font-size: 24px;">//实现协议方法
-(void)drinkWater{ NSLog(@"喂baby喝水");}


-(void)eatFood{
NSLog(@"喂宝宝吃饭");
}

@end


让后看ViewController

//
//  ViewController.m
//  代理设计模式
//
//  Created by dev on 16/3/8.
//  Copyright © 2016年 SWALLE. All rights reserved.
//

#import "ViewController.h"
#import "Baby.h"
#import "ChidrenNurse.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
Baby *baby = [[Baby alloc] init];
ChidrenNurse *nurse = [[ChidrenNurse alloc] init];
//设置baby的代理为nurse
baby.delegate = nurse;
[baby babyHundry];
[baby babyWantDrinkWeater];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: