Какова цель метода - accessoryDidDisconnect: в EAAccessoryDelegate? - PullRequest
1 голос
/ 13 марта 2012

Я работал над реализацией iOS, которая подключается к оборудованию, и поэтому мне приходится использовать платформу External Accessory. Для взаимодействия с устройствами вам необходим класс, который обрабатывает связь с EAAccessory объектами. Для этого вам нужно определить класс подключения вашего устройства по протоколу EAAccessoryDelegate.

Протокол EAAccessoryDelegate содержит один метод -

– accessoryDidDisconnect:(EAAccessory *)accessory.

Документация Apple гласит:

Протокол EAAccessoryDelegate определяет один метод получения уведомления, когда связанный объект EAAccessory отключен. Реализация этого метода является необязательной.

Когда вы создаете экземпляр своего класса, вы можете зарегистрировать свои собственные методы в системе NSNotificationCenter. При наличии события «Подключение устройства» или «Отключение устройства» вы можете обработать событие по своему усмотрению. Когда происходит событие «Отключение устройства», цель - accessoryDidDisconnect: становится бессмысленной, поскольку она предоставляет те же функции и данные для вашего класса.

Кроме того, в каждом примере, который я могу найти в отношении работы с External Accessory Framework, приводятся примеры обнаружения изменений подключения устройства с помощью механизма подписки NSNotificationCenter.

С учетом сказанного, какой смысл в методе – accessoryDidDisconnect:, когда он на самом деле никогда не используется? Да, это может быть реализовано, но, как я уже упоминал, во всех формах документации рекомендуется управлять этими типами изменений подключения с помощью NSNotificationCenter.

Я знаю, что это вопрос вежливый, но мне довольно любопытно.

1 Ответ

1 голос
/ 13 марта 2012

Это довольно распространенный шаблон проектирования с Apple, обеспечивающий быстрый доступ к очень распространенным уведомлениям NSNotificationCenter. На OS X они делают это с большим количеством уведомлений NSWindow, передавая содержимое NSNotification в этих случаях.

По сути, это простой способ реализовать уведомление без необходимости добавления и удаления наблюдателя.

В частности, это используется только после того, как объект EAAccessory был создан (что происходит только после того, как аксессуар подключен), и, таким образом, использование метода соединения в настоящее время неприменимо.

...