转载

浅谈iOS设计模式之委托与协议

委托模式 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中的协议方法

原文  http://iJack.pw/2016/01/20/iOS设计模式之委托与协议/
正文到此结束
Loading...