iOS MVC实现中的通信

时间:2014-08-09 10:28:19

标签: ios model-view-controller delegates notifications nsnotificationcenter

MVC 项目的 iOS 项目中,我通过委派在模型和控制器之间实现了通信。 但有些人说应该使用 NSNotificationCentre KVO 来完成。

这种正确的方法是在模型更改时通过代理通知控制器吗?

何时使用委托,通知和 KVO 在模型更改时通知控制器?

1 个答案:

答案 0 :(得分:0)

所有3种方法都是合法的 - 您实施的方法取决于您的项目设计。

协议/代理 需要耦合(可以放弃某些封装),必须使用弱/强引用进行管理。

通知/观察员 必须添加和删除,并且很快就会失控(例如重复的通知名称,保留的观察员,遍布各地的消息等。 )通知的最佳方法是使用个人(即功能级别)通知中心。

还必须添加和删除

KVO ,并且没有本机方法可以检查是否有任何特定属性,因此您必须添加你自己。当KVO / observed属性为零时,除非移除观察者,否则您的应用程序将崩溃。