在IOS中通过存在着很多委托模式的应用。
在iOS中使用三层架构:持久层,业务逻辑层,表示层。
业务逻辑层定义BusinessLayerDelegate,表示层中实现业务逻辑层中的delegate协议(在业务逻辑层中声明属性id<BusinessLayerDelegate> delegate),持久层定义PersistentLayerDelegate,业务逻辑层实现持久层的delegate协议(在持久层声明属性id<PersistentLayerDelegate> delegate),当持久层查询完毕,失败则在block中调用delegate业务逻辑层中实现的error的delegate方法,业务逻辑层中error的delegate方法则调用表示层中error的delegate方法,在表示层中可以对这条信息进行处理,提醒用户。
view
在tableview中delegate是viewcontroller,当view加载完毕时,会回调成功加载的block,在block中调用view controller中实现的delegate的成功加载代码,进行处理。
tableview的datasource协议,tableview视图将要加载时调用实现datasource协议的对象的数据方法,获得要显示几行,什么内容等信息。
delegate通过回调进行调用,datasource主动去调用数据方法。
application
从UIApplication.h中看来,iOS在main.m中启动,通过
int UIApplicationMain(int argc, char *argv[],NSString *principalClassName,NSString *delegateClassName);
方法将delegate传给UIApplication,当应用launch,finishLaunch时会回调delegate中对应的方法。