day022 Delegate与Protocol
来源:互联网 发布:靠谱日本代购淘宝店 编辑:程序博客网 时间:2024/06/05 11:07
一,不使用delegate
//
// main.m
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Cat.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *pxd = [[Person alloc] init];
[pxd needOneHouse];
Cat *jfm = [[Cat alloc] init];
[jfm needOneHouse];
}
return 0;
}
//
// Agent.h
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Cat.h"
@interface Agent : NSObject
//用一个变量来记录让我租房的那个人
@property (nonatomic, strong) Person *customer;
//用一个变量记录猫这个对象
@property (nonatomic, strong) Cat *catCustomer;
//找房源
- (void)rentHouse:(NSString *)str;
@end
//
// Agent.m
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import "Agent.h"
@implementation Agent
- (void)rentHouse:(NSString *)str{
NSLog(@"开始找房源");
NSLog(@"........");
NSLog(@"找到一个相关房源");
//告诉客户 调用客户里面的某个方法 传递参数过去
if (self.customer) {
[self.customer sendResult:@"贵阳花溪财大"];
}
if (self.catCustomer) {
[self.catCustomer sendResults];
}
}
@end
//
// Person.h
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Person : NSObject
- (void)needOneHouse;
//定义一个方法 用来接收中介返回过来的结果
- (void)sendResult:(NSString *)des;
@end
//
// Person.m
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import "Person.h"
#import "Agent.h"
@interface Person ()
@property (nonatomic, strong) Agent *xiaowang;
@end
@implementation Person
- (void)needOneHouse{
//找到一个中介 实例化一个对象
self.xiaowang = [[Agent alloc] init];
//告诉你是我让你去租房的
_xiaowang.customer = self;
//让这个中介去做事 找房子
[_xiaowang rentHouse:@"价格不是问题 就是要高大上"];
}
- (void)sendResult:(NSString *)des{
NSLog(@"这个房子不错 ,哥要了");
}
@end
//
// Cat.h
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Cat : NSObject
- (void)needOneHouse;
- (void)sendResults;
@end
//
// Cat.m
// 代理2
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import "Cat.h"
#import "Agent.h"
@implementation Cat
- (void)needOneHouse{
Agent *xiaowang = [[Agent alloc] init];
xiaowang.catCustomer = self;
[xiaowang rentHouse:@"舒适安逸 小巧玲珑"];
}
- (void)sendResults{
NSLog(@"加菲猫的邻居?我喜欢");
}
@end
二,使用delegate,会简化程序
//
// main.m
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Cat.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *pxd = [[Person alloc] init];
[pxd needOneHouse];
Cat *jfm = [[Cat alloc] init];
[jfm needOneHouse];
}
return 0;
}
//
// Agent.h
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
//定义一个协议 代理
@protocol RentHouseDelegate <NSObject>
@optional
- (void)useQQ:(NSString *)msg;
- (void)useEmail:(NSString *)msg;
@required
- (void)oneHalfMonthMoney;
@end
@interface Agent : NSObject
@property (nonatomic, assign) id<RentHouseDelegate> delegate;
//租房源
- (void)rentHouse:(NSString *)des;
@end
//
// Agent.m
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import "Agent.h"
@implementation Agent
- (void)rentHouse:(NSString *)des{
NSLog(@"...........");
NSLog(@"找到了你要的%@", des);
//判断delegate是否存在
//判断delegate是否服从了我的协议,是否真的实现我的约定
if ([self.delegate respondsToSelector:@selector(useQQ:)]){
[_delegate useQQ:@"房子非常霸道"];
}
if ([self.delegate respondsToSelector:@selector(useEmail:)]) {
[_delegate useEmail:@"房子非常霸道"];
}
if ([self.delegate respondsToSelector:@selector(oneHalfMonthMoney)]) {
[_delegate oneHalfMonthMoney];
}
}
@end
//
// Person.h
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Agent.h"
@interface Person : NSObject<RentHouseDelegate>
- (void)needOneHouse;
@end
//
// Person.m
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)needOneHouse{
Agent *xiaowang = [[Agent alloc] init];
xiaowang.delegate = self;
[xiaowang rentHouse:@"干净整洁"];
}
//required方法必须实现
- (void)oneHalfMonthMoney{
NSLog(@"给你500");
}
- (void)useEmail:(NSString *)msg{
NSLog(@"email 接收到了");
}
@end
//
// Cat.h
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Agent.h"
@interface Cat : NSObject<RentHouseDelegate>
- (void)needOneHouse;
@end
//
// Cat.m
// 代理3
//
// Created by PXD on 15-4-16.
// Copyright (c) 2015年 PXD. All rights reserved.
//
#import "Cat.h"
@implementation Cat
- (void)needOneHouse{
Agent *xiaowang = [[Agent alloc] init];
xiaowang.delegate = self;
[xiaowang rentHouse:@"光线好 视野棒"];
}
- (void)oneHalfMonthMoney{
NSLog(@"400");
}
- (void)useQQ:(NSString *)msg{
NSLog(@"qq");
}
@end
- day022 Delegate与Protocol
- delegate 与 protocol
- IOS delegate与protocol
- protocol与delegate
- Protocol 协议 与 delegate 代理
- Protocol与Delegate 使用方法详解
- Protocol delegate
- ios委托delegate与协议protocol
- 关于delegate 与 protocol 的理解 iOS
- 协议与委托(Protocol and Delegate)
- 黑马IOS - OC protocol与Delegate 理解
- IOS Protocol与Delegate详解(一)
- IOS Protocol与Delegate详解(二)
- 关于delegate 与 protocol 的理解 iOS
- iOS中的协议(Protocol)与代理(Delegate)
- protocol与delegate,代理(委托)与协议总结
- 协议与委托(Protocol and Delegate)实例解析
- 【iOS开发】协议与委托 (Protocol and Delegate) 实例解析
- R语言中的机器学习包
- QEMU+GDB调试方法
- c++中特殊关键词整理
- WPA2 和 WPA 的区别
- 《C++编程》第二章第20题
- day022 Delegate与Protocol
- <c:foreach><c:forTokens>
- 内存管理
- HDU 2826 || The troubles of lmy(判断两个N边形是否相似
- 队列-链式结构-C++实现
- 包 问 题
- android 退出所有Activity
- c++空类
- python的正则表达式re模块的常用方法