【问题标题】: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 管理这些类型的连接更改。

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

【问题讨论】:

    标签: objective-c ios external-accessory eaaccessory


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为是这种情况,但是,没有类似的-accessoryDidConnect 是不是很奇怪?说实话,我宁愿使用对已定义委托方法的调用,但是,为了保持一致性,我使用的是通知系统。
    • 不完全。问题是 EAAcessory 对象仅在连接附件时存在,因此在这种情况下没有什么可以成为代表。
    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 2015-05-20
    • 2014-04-25
    • 2010-09-07
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多