委托和协议

这里我说说我对委托(delegate)和协议(protocol)的理解:

1.委托是用来干什么的?

    由于objective-c没有内建的机制能让两个或多个回调函数协同工作并分享信息,为此委托就来解决这个问题。单个委托对象可以接收特定对象的全部事件消息,该委托对象可以根据需要,来保存和修改、使用、转发相关信息。

   委托是一种面向对象的回调(callbacks)机制。而传统意义上的回调是指在某个特定事件发生之前就已经设置好的函数,当相应事件发生时,程序就会调用该函数。

2.委托和目标-动作对的区别:

   目标-动作对(target-action pairs)是另一种面向对象的回调机制,比如按钮-事件模式。它的工作方式是:当特定的事件发生时(比如按下按钮),发生事件的一方会向指定的 目标对象发送一个之前设定好的动作消息,针对不同的事件(比如轻按、连按、按住不放),需要创建不同的目标-动作对。是多对多的关系。

  而委托机制是只要一个委托对象,就可以向该对象发送不同的事件消息,是一对多的关系。

 此外,目标动作对中的消息可是是任何消息,但委托没有这么灵活,对象只能向委托对象发送一组特定协议(protocol)中所声明的消息。

3.协议:

   凡是支持委托的对象,其背后都有一个相应的协议,里面有一些消息,这些消息可以发送给该对象的委托对象。委托对象需要根据这个协议,为其感兴趣的事件实现相应的方法。,如果某个类实现了某个协议中的方法,就称这个类“遵守”该协议

@protocol CLLocationManagerDelegate<NSObject>

@optional  //表明协议可选的

- (void) locationManager:(CLLocationManager *)manager  fromLocation:(CLLocation *)newLocation;

- (void)locationManager:(LocationManager *)manager  didUpdateHeading:(CLHeading *)newHeading;   //新的方位

@requried  //表明协议是必须要实现的

……

@end


以上的协议叫“委托协议”,并不是所有的协议都是委托协议,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值