objective-c - – accessoryDidDisconnect : method within the EAAccessoryDelegate? 的目的是什么

标签 objective-c ios external-accessory eaaccessory

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

EAAccessoryDe​​legate 协议(protocol)包含一个方法--

– accessoryDidDisconnect:(EAAccessory *)accessory

Apple 文档指出:

The EAAccessoryDelegate protocol defines a single method for receiving notifications when the associated EAAccessory object is disconnected. Implementation of this method is optional.

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

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

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

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

最佳答案

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

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

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

关于objective-c - – accessoryDidDisconnect : method within the EAAccessoryDelegate? 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9687794/

相关文章:

iphone - 重复动画不同次数

ios - 创建日历,即使关闭 iCloud 也没有本地资源

ios - UIActionSheet - "init"更改按钮样式

ios - UITextField 文本在动态类型调整大小后垂直移动

objective-c - 从另一个调用一个构造函数

ios - Objective-c 如何根据后台进程更新 UI

ios - 在我的 iOS 应用程序中与外部配件通信以播放流中的视频

ios - 从外部附件输入流读取并推送到s3的最有效方法?

ios - iPhone EAAccessoryManager 返回一个空的 NSArray

iphone - 底部按钮未显示在 iOS 模拟器中