2012-03-13 4 views
1

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

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

– accessoryDidDisconnect:(EAAccessory *)accessory.

В документации говорится Apple:

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

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

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

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

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

ответ

1

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

В принципе, это простой способ реализовать уведомление, не требуя, чтобы вы добавляли и удаляли своего наблюдателя.

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

+0

Я предположил, что это так, разве не странно, что нет подобного «-accessoryDidConnect»? Правда, я бы предпочел использовать вызов для определенного метода делегата, однако, для согласованности, я использую систему уведомлений. – RLH

+1

Не совсем. Проблема в том, что объект EAAcessory существует только тогда, когда аксессуар подключен, поэтому в этом случае нечего делать. – gaige