Delegate和protocol的理解

其实delegate常说委托,委托类。protocol协议,实现协议。
先阅读一下这篇文章:
http://haoxiang.org/2011/08/ios-delegate-and-protocol/#comment-581

那么我们怎么理解它们呢?
文章中作者也说道,protocol就是Objective-c的一个语法罢了。

@protocol ClassADelegate
 
- (void)methodA;
- (void)methodB;
 
@end



上面定义protocol就是定义了这个协议,就是一堆方法。凡是使用这个协议的类,都需要去实现它。

id<ClassADelegate> b = ...;
[b methodA];

举例使用:假如我们写了一堆类!就假设鸟、人、猪、马……等等具体类都要实现一个共同的行为协议,这个协议里面有“吃”这个方法。
我们只需如上定义:id<CustomDelegate> b = ......;  具体的b是鸟还是马还是人,我们不用管,只需要知道这些id的对象类里面有一个协议方法我们就能调用。

=**********************************分割线

在说delegate之前,还是记住那句话,protocol定义一堆方法,你要去实现它们。

文章中说到delegate是一种设计模式的使用。把自己的一些实现方法交给另外的类,就是委托给其他类。这个类就是你听到的delegate类。

有人会混淆:protocol也是要实现,delegate也是要实现,有啥区别啊,我晕了。

1、delegate是一个我们可以自定义的类,它实现了别的类委托的方法。
     protocol只是一个协议,语法定义的一堆方法,没有具体实现。

2、应该把delegate这个类去遵循某个xxxprotocol协议,xxxprotocol协议定义的是别的类需要委托的方法,委托协议。有了这个委托协议的类,才可以成为别的类的delegate类,( 因为你这个类就一定要实现委托协议里面的方法了呀)!

以上貌似听起来有点拗口。结合以上2点,你就能弄清楚protocol和delegate它们的区别,记住,完全不一样的东西哦!




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值