1

我一直在研究连接到硬件的 iOS 实现,因此,我不得不使用 External Accessory 框架。为了与设备交互,您需要有一个类来处理与EAAccessory对象的通信。为此,您必须使用EAAccessoryDelegate协议定义设备连接类。

EAAccessoryDelegate协议包含一种方法——

– accessoryDidDisconnect:(EAAccessory *)accessory.

苹果文档指出:

该协议定义了在关联对象断开连接EAAccessoryDelegate时接收通知的单一方法。EAAccessory此方法的实现是可选的。

当你实例化你的类时,你可以向NSNotificationCenter系统注册你自己的方法。当存在 Device Connect 或 Device Disconnect 事件时,您可以根据需要处理该事件。当 Device Disconnect 事件发生时,它的目的- accessoryDidDisconnect:就变得毫无意义,因为它为您的类提供了完全相同的功能和数据。

此外,我能找到的有关使用外部附件框架的示例提供了通过NSNotificationCenter订阅机制检测设备连接更改的示例。

话虽如此,该– accessoryDidDisconnect:方法从未真正使用过的意义何在?是的,它可以实现,但正如我所提到的,所有形式的文档都建议您通过NSNotificationCenter.

我知道这是一个挑剔的问题,但我很好奇。

4

1 回答 1

2

这是 Apple 非常常见的设计模式,为非常常见的 NSNotificationCenter 通知提供快捷方式。在 OS X 上,他们使用大量 NSWindow 通知来执行此操作,在这些情况下传递 NSNotification 的内容。

基本上,这是一种实现通知的简单方法,无需确保添加和删除观察者。

特别是,这仅在创建 EAAccessory 对象后使用(仅在连接附件后发生),因此此时连接方法不适用。

于 2012-03-13T17:13:22.973 回答