博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
怎么自己在Objective-C中创建代理
阅读量:4935 次
发布时间:2019-06-11

本文共 2148 字,大约阅读时间需要 7 分钟。

首先我们要先创建一个类,为了方便理解我们就模拟现实生活中的找中介租房子,因此先创建一个Person类

1.在Person.h中定义代理的协议,并完成代理方法声明:代码如下

1 // Person.h文件 2  3 #import 
4 5 @class Person; 6 7 //1 定义代理的协议 8 @protocol PersonDelegate
9 10 // 可选方法11 @optional12 - (void)personFindHouse:(Person *)person;13 // 必要方法14 @required15 16 @end17 18 @interface Person : NSObject19 20 @end

注:代理协议中可选方法可实现可不实现,但必要方法必须实现

2、定义代理属性:代码如下

1 // Person.h文件 2   3 #import 
4 @class Person; 5 //1 定义代理的协议 6 @protocol PersonDelegate
7 // 可选方法 8 @optional 9 - (void)personFindHouse:(Person *)person;10 // 必要方法11 @required12 13 @end14 15 @interface Person : NSObject16 @property (nonatomic,copy) NSString *name;17 //2 定义代理属性18 @property (nonatomic,weak) id
delegate;19 - (void)zuFang;20 @end

3、调用代理的方法(通知) 给代理发送消息:代码如下

1 // Person.m文件 2 #import "Person.h" 3  4 @implementation Person 5 - (void)zuFang 6 { 7     NSLog(@"%@--要租房",self.name); 8      9     //3 调用代理的方法(通知) 给代理发送消息10     if([self.delegate respondsToSelector:@selector(personFindHouse:)])11     {12         [self.delegate personFindHouse:self];13 14     }15 }16 @end

上面代码第10行是判断这个对象是否实现了personFindHouse:这个方法

好现在我们需要定义一个ZhongJie类来使用这个代理

1、让这个类遵守代理协议:代码如下

1 // ZhongJie.h文件2 #import 
3 #import "Person.h"4 5 @interface ZhongJie : NSObject
6 7 @end

2、实现代理方法:代码如下

1 // ZhongJie.m文件 2 #import "ZhongJie.h" 3  4 @implementation ZhongJie 5  6 - (void)personFindHouse:(Person *)person 7 { 8     NSLog(@"找到房子了 "); 9 }10 11 @end

3、设置代理属性:代码如下

1 // ViewController.m 文件 2 #import "ViewController.h" 3 #import "Person.h" 4 #import "ZhongJie.h" 5 @interface ViewController () 6  7 @end 8  9 @implementation ViewController10 11 - (void)viewDidLoad {12     [super viewDidLoad];13     // Do any additional setup after loading the view, typically from a nib.14     ZhongJie *zj = [[ZhongJie alloc] init];15     16     Person *p = [[Person alloc] init];17     18     p.name = @"someOne";19     //3 设置代理属性20     p.delegate = zj;21     22     [p zuFang];23     24 }25 26 27 @end

 

这样我们就创建了代理,并让一个对象使用了这个代理

 

转载于:https://www.cnblogs.com/melodyzhy/p/4640619.html

你可能感兴趣的文章
地图定位及大头针设置
查看>>
oracle常用小知识点
查看>>
CATransform3D参数的意义
查看>>
"外部组建发生错误"
查看>>
怎么自己在Objective-C中创建代理
查看>>
svn检出maven工程到eclipse里面,部署到tomcat的步骤
查看>>
Under Armour Drive 4 Performance Reviews
查看>>
C#操作目录和文件
查看>>
警惕数组的浅拷贝
查看>>
百度地图 导航
查看>>
SQLServer 错误: 15404,无法获取有关 Windows NT 组
查看>>
html5全局属性
查看>>
【转】Android Hook框架Xposed详解
查看>>
Android 有用代码片段总结
查看>>
英语各种时态例句
查看>>
从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
查看>>
(转)系统引导管理器GRUB详解
查看>>
[转帖]SAP MM Tolerance
查看>>
数据访问C#入门经典第21章-读写压缩数据
查看>>
PHP超时处理全面总结(转)
查看>>