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