Ios 我应该为远程应用程序使用哪种观察者模式?

Ios 我应该为远程应用程序使用哪种观察者模式?,ios,objective-c,delegates,key-value-observing,nsnotifications,Ios,Objective C,Delegates,Key Value Observing,Nsnotifications,我正在构建一个远程应用程序,它正在接收其附件的不同状态。它正在接收诸如:电源状态开/关、音量状态5、均衡器设置jazz等信息,除了将这些状态映射到具有选定或未选定状态的UI中,并将所做的更改发送回附件之外,没有其他事情可做 关于应用程序架构: 应用程序与它的附件连接,如使用的Apple中所示。 UI是在非重复定制的UITableViewCell中构建的,其中包含UIButtons。启动应用程序时,数据模型类将从examplesEADSessionController接收所有当前状态,并且必须使用

我正在构建一个远程应用程序,它正在接收其附件的不同状态。它正在接收诸如:电源状态开/关、音量状态5、均衡器设置jazz等信息,除了将这些状态映射到具有选定或未选定状态的UI中,并将所做的更改发送回附件之外,没有其他事情可做

关于应用程序架构: 应用程序与它的附件连接,如使用的Apple中所示。 UI是在非重复定制的
UITableViewCell
中构建的,其中包含
UIButton
s。启动应用程序时,数据模型类将从examples
EADSessionController
接收所有当前状态,并且必须使用所述模式之一将这些状态传送到UI(单元格直接而不是UITableViewController)。这将是一个独立的单页应用程序,看起来像一个真正的遥控器

考虑到
NSNotification
、委托和KVO(键值观察),我正试图找出我应该在这种特殊方法中使用哪种模式?

如果您能回答为什么选择其中一个,并简要说明如何实施,我们将不胜感激。如果您的答案是KVO,请提供更多的见解,因为我迄今为止从未使用过这种模式

这要看情况而定

最松散耦合的是使用NSNotification和NSNotificationCenter,因为发布通知的实例不一定了解观察者,并且可以有多个观察者

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

KVO模式需要更精确地设计观测关系。您将不得不关注KVO是如何实现的。KVO还允许一对多观察。KVO的缺点是,如果观察关系是动态的和暂时的,那么您必须更加注意这些对象是如何被拆除的,否则您可能会遇到很多崩溃,比如向解除锁定的实例发送更新等


如果您正在处理一个将交付给第三方使用的库,那么NSNotification可能是第一选择。

如果使用通知,我会创建一个通知并使用userInfo通知接收者(
UITableViewCell
s)更改了什么,或者我最好为每个按钮创建大约25个通知,并且只让单元格观察他们感兴趣的通知?我认为,您应该将它们组合成一个更新事件,发布一个通知,并让
UITableViewController
观察它们。UITableViewController收到通知后,应推动更新和/或重新加载相应的行。由于总是重复使用
UITableViewCell
s,在您描述的场景中,不建议直接从单元格进行更新。在我的情况下,tableview只保存远程UI的非重复单元格。因此,由于我认为数据绑定,在单元格类中设置单元格按钮的选定状态应该是更干净的方法。谢谢你的帮助