关于iOS Delegate的个人理解
2013-06-08 21:30
267 查看
delegate中文翻译是委托或者代理,顾名思义,就是把一些任务委托给其他人去实现。
在iOS中常用的代理包括程序的代理UIApplicationDelegate,普通视图的代理如UITableViewDelegarte。
举个生活的例子来说就是老板由于事务非常繁琐,要接电话,和客人约定见面时间等,这个时候老板请了一个秘书,而老板就把这些额外的事务委托给秘书去完成,或者说秘书就是老板的代理,即[boss setDelegate:secretary].而秘书在接受委托后在特定的事件(如电话响了,客人来了)等到来后,做出相应的响应,如接电话,先和客人会谈等,从而为老板分担了部分事务。
单纯就语言层面来看,其实个人感觉delegate和Java语言中的事件监听器actionListener非常类似,二者均负责监听特定的事件,一旦这些事件到来便调用其中的方法作出响应。
对比一下就是:
(1)Java
在程序中注册了一个事件监听器actionListener(),当事件event到来后将被该监听器接收到并且调用actionPerformed()方法做出响应。
(2)iOS
此时delegate相当于一个事件监听器,而实现代理必须实现代理中所规定的方法,此时若用户按下了home键,即delegate接收到了applicationWillEnterBackground的消息,于是调用协议中的(void)applicationWillEnterBackground:方法作出响应。而协议里面的方法就相当于上面的actionPerformed(ActionEvent event)方法。
那么为什么这个delegate的作用何在呢,为什么需要有delegate出现呢?
MVC是一种设计模式,当用户操作view时,为了及时作出响应更新界面,controller必须监听到用户的动作,在model处理完毕后由controller向view发送消息更新界面。MVC模式中view和controller是分离开来各司其职的,那么二者之间如何通信或者如何联系呢,这个时候delegate就用到了,将controller设置为view的delegate,view负责向用户展示图形界面,而view上的数据更新等操作则委托给controller代为完成,因此可以说delegate既实现了view和controller的分离,但又将二者紧密地联系在一起。
delegate是iOS中实现MVC模式必不可少的一部分。
在iOS中常用的代理包括程序的代理UIApplicationDelegate,普通视图的代理如UITableViewDelegarte。
举个生活的例子来说就是老板由于事务非常繁琐,要接电话,和客人约定见面时间等,这个时候老板请了一个秘书,而老板就把这些额外的事务委托给秘书去完成,或者说秘书就是老板的代理,即[boss setDelegate:secretary].而秘书在接受委托后在特定的事件(如电话响了,客人来了)等到来后,做出相应的响应,如接电话,先和客人会谈等,从而为老板分担了部分事务。
单纯就语言层面来看,其实个人感觉delegate和Java语言中的事件监听器actionListener非常类似,二者均负责监听特定的事件,一旦这些事件到来便调用其中的方法作出响应。
对比一下就是:
(1)Java
new actionListener(public void actionPerformed(AcrionEvent event) { //do something to respond to event });
在程序中注册了一个事件监听器actionListener(),当事件event到来后将被该监听器接收到并且调用actionPerformed()方法做出响应。
(2)iOS
//UIApplicationDelegate -(void)applicationWillEnterBackground:(UIApplication *)application { //do something if application will enter background. }
此时delegate相当于一个事件监听器,而实现代理必须实现代理中所规定的方法,此时若用户按下了home键,即delegate接收到了applicationWillEnterBackground的消息,于是调用协议中的(void)applicationWillEnterBackground:方法作出响应。而协议里面的方法就相当于上面的actionPerformed(ActionEvent event)方法。
那么为什么这个delegate的作用何在呢,为什么需要有delegate出现呢?
MVC是一种设计模式,当用户操作view时,为了及时作出响应更新界面,controller必须监听到用户的动作,在model处理完毕后由controller向view发送消息更新界面。MVC模式中view和controller是分离开来各司其职的,那么二者之间如何通信或者如何联系呢,这个时候delegate就用到了,将controller设置为view的delegate,view负责向用户展示图形界面,而view上的数据更新等操作则委托给controller代为完成,因此可以说delegate既实现了view和controller的分离,但又将二者紧密地联系在一起。
delegate是iOS中实现MVC模式必不可少的一部分。
相关文章推荐
- 关于IOS证书的个人理解
- 关于IOS delegate回调的理解
- (转载)关于delegate 与 protocol 的理解 iOS
- 关于delegate 与 protocol 的理解 iOS
- 关于delegate, category和subclass,个人的理解
- 关于delegate 与 protocol 的理解 iOS
- iOS MVVM 的一点个人理解
- 关于objectiveC中的delegate的理解
- 关于iOS中属性变量setter与getter方法的理解
- ios:关于ASIHTTP:setDownloadProgressDelegate代理不声明协议的问题(已解决)
- 深入理解iOS API系列(四)理解CNContactPickerDelegate
- 关于iOS的block块代码的理解
- 关于C#的委托(delegate)的自我理解
- 关于作用域的范围的个人理解
- 关于Python2/3多进程的一些个人理解
- 关于python锁的一些个人理解
- 关于Android中View滑动知识的一点个人理解
- 关于C的指针,Java/Python的引用,形参与实参个人理解
- 关于事件与委托的一些个人简单理解
- [转]ios中关于delegate (委托)的使用心得