object-c的委托模式

2 篇文章 0 订阅
1 篇文章 0 订阅

 本人做android,最近研究ios,object-c,属于从java转oc的一类,新接触oc,委托代理模式不得不了解。自己的一些理解记录下,有不对之处请大家改正。

本人参考:http://hi.baidu.com/onejw/blog/item/4437c6de3959634995ee373f.html

                             http://blog.csdn.net/dream_it_life/article/details/5362232

                              http://www.douban.com/group/topic/16138548/

谢谢各位前辈

场景一、

感觉委托好像java里的 依赖,事件监听,它可以处理的是view层和controller直接的关系。如视图层不仅负责显示,还负责和用户的直接交互,如点击事件的监听,他能获取事件的监听,控制层知道点击后怎么做,但他不知道用户是否点了。这时候listenner接口就定义了一个监听的功能抽象,并在controller里面通常以内部类的方式得到它的实现类的实例,付给了view.充当了这个代理delegate。每个view将这个listenner(delegate)当自己的成员变量,并有set方法。在控制器里面回将之实例set;(最初的想法,很多不对)

继续研究应该这样理解 ,view是控制器的delegate,controller想要知道怎么做,是由他的不同的view,。onclic调用的

android里面是通过activity的oncreate方法里面调用delegate方法

继续研究、

1 在protocol里面定义delegate的@required方法;

2 当一个类作为另一个类的delegate的时候需要遵从这个协议,实现其方法,使用正式协议,并标记为必需的好处是,可以通过编译器来帮助矫正不该出现的错误。

 

有句话、

小女孩想要甜点阿姨手上的糖果,仰头满脸期待地问妈妈:“妈妈,我想要阿姨手上的糖果”。能不能要到糖果取决于妈妈的YES or NO.

小女孩的delegate就是妈妈

 

可不可以这样理解:委托代理就是在在一个对象a内部设置一个 id类型的实例变量,然后将另外一个对象b赋值给a的这个实例变量,这样就可用通过操作实例变量a的这个id变量来调用b对象的方法。

 

委托是一种避免对复杂的UIKit对象(比如缺省的UIApplication对象)进行子类化的机制。在这种机制下,您可以不进行子类化和方法重载,而是将自己的定制代码放到委托对象中,从而避免对复杂对象进行修改。当您感兴趣的事件发生时,复杂对象会将消息发送给您定制的委托对象。您可以通过这种“挂钩”执行自己的定制代码,实现需要的行为。 上文说的controller是复杂对象,止血一个就够了

个iPhone应用程序都必须有应用程序委托对象,它可以是您希望的任何类的实例,但需要遵循UIApplicationDelegate协议,该协议的方法定义了应用程序生命周期中的某些挂钩,您可以通过这些方法来实现定制的行为。虽然您不需要实现所有的方法,但是每个应用程序委托都应该实现“处理关键的应用程序任务”部分中描述的方法。

delegate也相当于给复杂类了一个行为接口,复杂类只需要知道调用delegate的哪些方法不需要知道方法具体实现,这里的delegate可以不是多个准从协议的之类,可以是一个遵从协议的子类的不同生命周期方法


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值