我一直在研究连接到硬件的iOS实现,因此,我不得不使用外部附件框架。 为了与设备交互,您需要有一个处理与EAAccessory
对象的通信的类。 为此,必须使用 EAAccessoryDelegate
协议定义设备连接类。
EAAccessoryDelegate
协议包含一种方法——
– accessoryDidDisconnect:(EAAccessory *)accessory
.
苹果文档指出:
实例
EAAccessoryDelegate
协议定义了用于接收的单个方法 当关联的EAAccessory
对象断开连接时发出通知。 此方法的实现是可选的。
化类时,可以在NSNotificationCenter
系统中注册自己的方法。 当存在设备连接或设备断开连接事件时,您可以根据需要处理该事件。 发生"设备断开连接"事件时,- accessoryDidDisconnect:
的目的将变得毫无意义,因为它为类提供了完全相同的功能和数据。
此外,我可以找到的有关使用外部附件框架的示例都提供了通过NSNotificationCenter
订阅机制检测设备连接更改的示例。
话虽如此,当– accessoryDidDisconnect:
方法从未真正使用过时,它的意义何在? 是的,它可以实现,但正如我提到的,所有形式的文档都建议您通过 NSNotificationCenter
管理这些类型的连接更改。
我知道这是一个棘手的问题,但我很好奇。
这是 Apple 非常常见的设计模式,为非常常见的 NSNotificationCenter 通知提供捷径。 在OS X上,他们使用许多NSWindow通知来执行此操作,在这些情况下传递NSNotization的内容。
基本上,这是一种实现通知的简单方法,而无需确保添加和删除观察器。
特别是,这仅在创建 EAAccessory 对象后使用(仅在连接附件后发生(,因此,此时使用 connect 方法不适用。