0

我正在构建一个远程应用程序,该应用程序正在接收其附件的不同状态。它正在接收诸如:电源状态开/关、音量状态 5、均衡器设置爵士乐等内容,除了将这些状态映射到具有选定或未选定状态的 UI 并将完成的更改发送回附件之外,别无他法。

关于应用程序架构: 应用程序与其附件连接,如 Apples EADemo 项目中所示,使用外部附件框架UITableViewCellUI 是在充满s 的非重复定制中构建UIButton的。启动应用程序时,数据模型类将从示例中接收所有当前状态,EADSessionController并且必须使用上述模式之一将这些状态传达给 UI(单元格直接而不是 UITableViewController)。这将是一个独立的单页应用程序,看起来像一个真正的遥控器。

考虑NSNotification,委托和 KVO(键值观察)我想弄清楚我应该将哪些模式用于这种特殊方法?

任何关于为什么选择其中一个的答案以及关于如何实施的简要描述将不胜感激。如果您的答案是 KVO,请提供更多见解,因为到目前为止我从未使用过这种模式。

4

1 回答 1

1

这真的取决于。

最松耦合的一种是使用 NSNotification 和 NSNotificationCenter,因为发布通知的实例不一定知道观察者,可以有多个观察者。

委托模式更加严格,通常只有一个委托对象接收消息。如果项目中的 UITableViewController 是唯一处理消息的实例(或者它会正确地将消息传播到其他组件),它仍然可以。

KVO 模式需要更精确设计的观察关系。您将必须并且必须关注 KVO 是如何实现的。而且KVO还允许一对多的观察。KVO 的缺点是,如果观察关系是动态的和瞬态的,您必须更加注意这些对象是如何被拆除的,否则您可能会遇到很多崩溃,例如向已释放的实例发送更新等。

如果您正在开发一个将交付给第 3 方使用的库,那么 NSNotification 可能是首选。

于 2013-01-31T12:05:50.203 回答