2015.7.30 第五堂(补)delegate 三部曲理解之二(使用协议)


在Agency.h文件中定义一个协议,规定客户可以使用的接受方式,而不是在Person、Alien、Dog中分别定义、实现反馈的方法。从而弥补了第二个缺点——无法对租房者进行统一管理反馈信息。这是使用protocol的改进方式,完成了上图的蓝框部分。


协议是方法的结合,谁用哪一种反馈方式,在其.m文件中实现就可以了。

在Agency.h中有一个知识点,前向引用:

/*
 前向引用 避免头文件之间的相互引用 只是声明有Person这个类
 在头文件里面没有实际导入这个Person头文件
 
 在.m文件里面必须要使用import导入头文件
 */
@class Person;
@class Alien;
//之前的三部曲之一没有class,因为只需要在agency里导入person(agency要判断是否用到了某个反馈方法 self.man指向Person)而反之不需要(因为自己声明实现了反馈方法),而现在需要需要相互引用(同上<span style="font-family: Arial, Helvetica, sans-serif;">)(因为反馈方法在协议里 在agency.h中)。</span>
在Agency.m中,需要对.h未导入的文件进行导入。

#import "Agency.h"
#import "Person.h"// 因为.h文件中只有前向声明,此处是真正的引用
#import "Alien.h"

但是她没有改正第一个缺点:每增加一个租房者就需要在Agency中@property一个对象来接收,不够灵活。


附:代码地址:http://pan.baidu.com/s/1hqpjI4W

代码结果截图



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值