协议和委托 之 开车

来源:互联网 发布:relief算法 matlab 编辑:程序博客网 时间:2024/04/30 00:39
 协议就相当于是C++中的纯虚基类,它只能定义函数并且只能由其他类来实现。而委托则类似于Java接口,其实协议和委托之间并无必然联系,只是在Obj—C中常用协议来实现委托。
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];}@endint 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;}

协议和委托 其实就是把自己的事让别人来帮我做。