在 MVC 项目的 iOS 项目中,我通过委派在模型和控制器之间实现了通信。 但有些人说应该使用 NSNotificationCentre 或 KVO 来完成。
这种正确的方法是在模型更改时通过代理通知控制器吗?
何时使用委托,通知和 KVO 在模型更改时通知控制器?
答案 0 :(得分:0)
所有3种方法都是合法的 - 您实施的方法取决于您的项目设计。
协议/代理 需要耦合(可以放弃某些封装),必须使用弱/强引用进行管理。
通知/观察员 必须添加和删除,并且很快就会失控(例如重复的通知名称,保留的观察员,遍布各地的消息等。 )通知的最佳方法是使用个人(即功能级别)通知中心。
还必须添加和删除KVO ,并且没有本机方法可以检查是否有任何特定属性,因此您必须添加你自己。当KVO / observed属性为零时,除非移除观察者,否则您的应用程序将崩溃。