delegate 的理解
来源:互联网 发布:炫舞时代全p源码 编辑:程序博客网 时间:2024/05/04 08:20
delegate 是与subclass 实现扩展的另一种方式。
一个subclass类的行为在其编译时候就确定下来了。
但有些时候,希望一个类的行为在不同情况下(用户交互,不同状态时),是runtime flexibility的。这时候选择delegate更加合适。
例如NSWindow,在某些情况下,希望“关闭-close”能执行不同的处理。(可能是,保存,刷新另一个界面等等)。
代理通常要实现一个Protocol,所以它们能够响应这个“情况”。
但是各个代理应该有自己响应的方式,所以当NSWindow的delegate 被赋值到不同的delegate上时,它就可以有不同的功能,
这就是 runtime 灵活性了。
更多的变化:
· 一个delegate 可以为多个object服务
· 一个delegate可以实现 all, some 或者 none 的protocol接口。
· object在运行时还可以换delegate (但是不能换继承,对吧)
习惯用法:
·为了最大的通用,一般声明为id类型 -(id)delegate. property (assign) 就可以了,不要retain.
(另一个理由是,delegate是nil的话并不影响object 的工作,所以被代理方并不需要持有delegate )
如果delegate 是nil,对象应该以默认的方式执行。
·delegate 的接口方法一般以这些词开头: should,will,did
·
- 对delegate的理解
- 对delegate的理解
- delegate 的理解
- delegate委托的理解
- [C#] 对delegate的理解
- 关于delegate的形象理解
- Delegate和protocol的理解
- 对C# delegate的理解
- 【iOS初级】delegate的理解
- 理解delegate
- Delegate理解
- [C#]我对delegate的理解
- 完全新手对delegate使用的理解
- ios中的delegate的理解运用
- iphone开发中的delegate的理解一
- 关于objectiveC中的delegate的理解
- 黑马程序员---委托(delegate)的进一步理解
- objective-c delegate 委托 代理 的理解
- tomcat启动时加载的类顺序
- rt3070移植
- defaultlib "library" conflicts with use of other libs; use /NODEFAULTLIB:library
- Android之我对handler的理解
- Windows 到 Linux 之旅
- delegate 的理解
- linux 动态库 _dso_handler 的问题
- win7当wifi热点,解决一根网线,多台笔记本上网(有图有真想)
- AlertDialog的简单实例
- MATLAB switch case 语句使用实例源程序
- Android几个面试题的解答
- Patch Tips
- sendmessage与sendnotifymessage的区别
- 2012年几大传统编程语言就业趋势分析