在 iOS 上通知框架客户端状态更改的最佳方式

Best way to notify framework clients of state changes on iOS

提问人:beeselmane 提问时间:3/16/2022 更新时间:3/16/2022 访问量:56

问:

我正在为 iOS 应用程序开发一个框架,该框架允许与我公司制造的自定义 BLE 设备连接。我们计划将带有公共标头的框架二进制文件分发给客户端。我已经设计了面向客户端的界面,但它缺少一个主要功能:各种不同状态条件的通知。也就是说,当框架开始扫描设备、连接到设备、读取数据、上传到我们的后端等时,客户端应用程序目前无法知道。

这对于本地测试来说很好,但在发布之前,最好添加一些功能,以允许客户端构建基于这些不同状态条件进行更新的 UI。我不完全确定目前最好的方法是什么。我知道我可以为每个状态更改创建并发布通知,但我不确定是否有更好的方法可以做到这一点?我应该接受用户回调吗?公开某种侦听器协议和能力寄存器侦听器?我相信其他人以前已经解决了这个问题,你发现什么适用于 iOS?NSNotificationCenter

IOS Objective-C Cocoa-Touch 框架

评论


答:

2赞 guru 3/16/2022 #1

使用 NSNotificationCenter 进行一对多通信,它会通知所有注册到事件的对象,而不知道是谁抛出的。

使用协议和委托进行一对一的对象通信。

根据我的经验,您应该与代表一起去,这将是干净的实现,您还可以定义可选和必需的协议。客户端的全局类可以使用此委托,并更新。

评论

2赞 Mario 3/17/2022
在 Cocoa 和 Cocoa-Touch 框架中,具有委托的类既要向委托发送消息,又要发送通知,这是很常见的。我建议即使你想实现一个委托,也要发送通知。首先,委托旨在扩展其“老板”类的行为。如果预计客户端想要提醒客户端应用的其他部分,则可以通过将通知与委托方法配对来帮助客户端实现此目的。这提供了便利性和灵活性。有关示例,请参阅 UITextFieldDelegate 文档。
0赞 beeselmane 3/18/2022
这是有道理的,我特别喜欢在这里的评论中发布的想法@Mario同时使用委托和通知,以允许客户端的最大灵活性。谢谢大家的想法,似乎我的想法是有道理的!