协议就相当于是C++中的纯虚基类,它只能定义函数并且只能由其他类来实现。而委托则类似于Java接口,其实协议和委托之间并无必然联系,只是在Obj—C中常用协议来实现委托。
protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。
协议和委托 其实就是把自己的事让别人来帮我做。
protocol-协议,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。
delegate-委托,顾名思义就是委托别人办事,就是当一件事情发生后,自己不处理,让别人来处理。
#import <Foundation/Foundation.h>
//开车协议
@protocol DriveCarProtocol <NSObject>
@required
//要遵循开车协议的司机去开车, 更具有开车的本领
- (void)driveCar;
@end
//司机类
@interface Driver : NSObject<DriveCarProtocol>
@end
//司机会开车
@implementation Driver
//drive car method
- (void)driveCar
{
NSLog(@"drive car");
}
@end
//老板类
@interface Boos : NSObject
{
//老板要雇佣一个人,这个人是司机
id<DriveCarProtocol> _myDriver;
}
@property(nonatomic, retain) id<DriveCarProtocol> myDriver;
//老板让司机开车
- (void)startDriverCarAction;
@end
@implementation Boos
@synthesize myDriver = _myDriver;
- (void)startDriverCarAction
{
NSLog(@"Boos need drive car");
//让司机去开车
[[self myDriver] driveCar];
}
@end
int main(int argc, const char * argv[])
{
Boos *boos = [[Boos alloc] init]; //有个老板
Driver *driver = [[Driver alloc] init]; //有个司机
//开始行动
NSLog(@"Action");
[boos setMyDriver:driver]; //老板雇佣司机
[boos startDriverCarAction]; //老板让司机开车
[boos release]; //到了老板下车
[driver release]; //司机走了
return 0;
}
协议和委托 其实就是把自己的事让别人来帮我做。