代理就是层级关系比较小的时候使用。比如当一个view需要更新数据时,需要通过控制器获取最新的模型数据就可以使用代理。代理是需要一层一层的往父控件传递。
通知就是层级关系比较大的时候使用。当需要跨控制器传数据时,就可以发出通知,发送一个通知整个项目都可以监听到的。还有一种情况,当模型数据发生改变时,想让控制器知道也可以通过通知实现。通知是不用一层一层的往上传递,它可以跨越多个控制器传递信息。还有最重要的一点,通知不用的时候需要关闭,所以通知性能比较低。
代理只能一对一;通知可以一对多和多对多。代理比较规范,可以定义自己的方法。
|
|