EAAccessoryDelegate 中的 –accessoryDidDisconnect: 方法的目的是啥?
Posted
技术标签:
【中文标题】EAAccessoryDelegate 中的 –accessoryDidDisconnect: 方法的目的是啥?【英文标题】:What is the purpose of the – accessoryDidDisconnect: method within the EAAccessoryDelegate?EAAccessoryDelegate 中的 –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 对象仅在连接附件时存在,因此在这种情况下没有什么可以成为代表。以上是关于EAAccessoryDelegate 中的 –accessoryDidDisconnect: 方法的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章
IOS 从 AppDelegate 中的 addMessageFromRemoteNotification 显示 UIViewController
从 AppDelegate 中的 ViewController 获取参数。
从 appDelegate 呈现 ViewController
应用程序委托中的 NSUnknownKeyException 错误
在 appDelegate 中的 didReceiveRemoteNotification 方法的 Present 模式后推送控制器