EAAccessoryDe​​legate 中的 –accessoryDidDisconnect: 方法的目的是啥?

Posted

技术标签:

【中文标题】EAAccessoryDe​​legate 中的 –accessoryDidDisconnect: 方法的目的是啥?【英文标题】:What is the purpose of the – accessoryDidDisconnect: method within the EAAccessoryDelegate?EAAccessoryDe​​legate 中的 –accessoryDidDisconnect: 方法的目的是什么? 【发布时间】:2012-03-13 16:12:01 【问题描述】:

我一直致力于连接到硬件的 ios 实现,因此,我不得不使用外部附件框架。为了与设备交互,您需要有一个类来处理与EAAccessory 对象的通信。为此,您必须使用EAAccessoryDelegate 协议定义您的设备连接类。

EAAccessoryDelegate 协议包含一种方法——

– accessoryDidDisconnect:(EAAccessory *)accessory.

Apple 文档指出:

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

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

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

话虽如此,当– accessoryDidDisconnect: 方法从未真正使用过时,它的意义何在?是的,它可以实现,但正如我所提到的,所有形式的文档都建议您通过NSNotificationCenter 管理这些类型的连接更改。

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

我认为是这种情况,但是,没有类似的-accessoryDidConnect 是不是很奇怪?说实话,我宁愿使用对已定义委托方法的调用,但是,为了保持一致性,我使用的是通知系统。 不完全。问题是 EAAcessory 对象仅在连接附件时存在,因此在这种情况下没有什么可以成为代表。

以上是关于EAAccessoryDe​​legate 中的 –accessoryDidDisconnect: 方法的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

应用程序LEGATE1

IOS 从 AppDelegate 中的 addMessageFromRemoteNotification 显示 UIViewController

从 AppDelegate 中的 ViewController 获取参数。

从 appDelegate 呈现 ViewController

应用程序委托中的 NSUnknownKeyException 错误

在 appDelegate 中的 didReceiveRemoteNotification 方法的 Present 模式后推送控制器