委托模式    delegate 是Cocoa中十分常见的设计模式,通常使用协议    protocol 来实现。  
使用delegate就可以让单继承的子类实现父类之外的方法,这与Java中的接口机制非常类似。
或者可以说一个类想实现某些操作,它可以把这些操作的实施细节委托给另外一个类来完成。
一个简单的例子如下:
@protocolPrintDelegate<NSObject> - (void)print; @end   @interfaceAClass:NSObject<PrintDelegate> @propertyid<PrintDelegate> delegate; @end  @implementationAClass  -(void)sayHello {  [self.delegateprint]; }  -(void)print { NSLog(@"Do Print"); } @end  // 使用 AClass intmain(intargc,constchar* argv[]) { @autoreleasepool{  AClass * a = [AClass new];  a.delegate= a;  [a sayHello];  } return0; }     这里对象a的delegate可以设置为任何实现了    PrintDelegate 协议的对象。  
一个常见的应用场景,AView中包含了BView,而BView需要修改AView的界面,大致的步骤如下:
定义一个协议,在AView中实现协议的方法
BView中设置一个委托变量
把BView的委托变量设置为AView,就是BView委托AView去办事
事件发生后,用委托变量调用AView中的协议方法