关于block,delegate,notification
我开发时候经常用到block,delegate,notification来进行类之间的通信,或是回调。但是不太清楚到什么时候用block好,什么时候用delegate何时,什么时候该用notification。在我的代码里这三种形式都可以互换,这应该是不好的吧,没有发挥出他们各自的优势。
来讨论讨论吧,大家都是怎么用的
我开发时候经常用到block,delegate,notification来进行类之间的通信,或是回调。但是不太清楚到什么时候用block好,什么时候用delegate何时,什么时候该用notification。在我的代码里这三种形式都可以互换,这应该是不好的吧,没有发挥出他们各自的优势。
来讨论讨论吧,大家都是怎么用的
不知道为什么这么多人反对用Notification, 在1对多通信的情况下肯定是Notification最方便. 另外在斯坦福的教程里对iOS的MVC讲解时,也是建议Model层与Controller层的通信使用Notification. 4.0之后Notification也提供了Block的方式接收通知, 代码的维护和可读性不比Delegate差. 唯一要注意的是在类释放时要把Notification注销掉, 以免重复注册.
Block无疑是最方便的, 有Block的API就别用Delegate的了.
Delegate的定义和使用都不方便, 造成了代码分散可读性差, 但是很多人习惯了用它, 也没什么问题.
总的来说, 我的习惯是: 1. 1对多, 用Notification (如登陆, 注销这类几乎所有页面都需要响应的事件) 2. 1对1, 系统API或第三方API, 有Block的用Block, 没有当然用Delegate了; 自己定义的API随意.(因为Block用起来方便, 定义起来也不方便)