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;
}
協議和委託 其實就是把自己的事讓別人來幫我做。