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 b = ...;
[b methodA];

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

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

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

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

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

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

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

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




你可能感兴趣的:(IOS知识点)