Какова цель — аксессуарDidDisconnect:метод внутри EAAccessoryDelegate?
-
13-12-2019 - |
Вопрос
Я работаю над реализацией iOS, которая подключается к оборудованию, и поэтому мне приходится использовать платформу внешних аксессуаров.Чтобы взаимодействовать с устройствами, вам нужен класс, который обрабатывает связь с устройствами. EAAccessory
объекты.Для этого вам необходимо определить класс подключения вашего устройства с помощью EAAccessoryDelegate
протокол.
А EAAccessoryDelegate
протокол содержит один метод--
– accessoryDidDisconnect:(EAAccessory *)accessory
.
В документации Apple указано:
А
EAAccessoryDelegate
Протокол определяет один метод получения уведомлений, когда связанныеEAAccessory
объект отключен.Реализация этого метода не является обязательной.
Когда вы создаете экземпляр своего класса, вы можете зарегистрировать свои собственные методы с помощью NSNotificationCenter
система.Когда происходит событие подключения или отключения устройства, вы можете обработать это событие по своему усмотрению.Когда происходит событие отключения устройства, цель - accessoryDidDisconnect:
оказывается бессмысленным, поскольку он предоставляет вашему классу точно такие же функции и данные.
Кроме того, каждый пример, который я могу найти относительно работы с внешней инфраструктурой аксессуаров, дает примеры обнаружения изменений подключения устройства через NSNotificationCenter
механизм подписки.
С учетом сказанного, в чем смысл – accessoryDidDisconnect:
метод, когда он никогда не используется?Да, это можно реализовать, но, как я уже упоминал, во всех формах документации рекомендуется управлять этими типами изменений подключения через NSNotificationCenter
.
Я знаю, что это щекотливый вопрос, но мне очень любопытно.
Решение
Это довольно распространенный шаблон дизайна в Apple, обеспечивающий сокращение для очень распространенных уведомлений NSNotificationCenter.В OS X они делают это с большим количеством уведомлений NSWindow, передавая в этих случаях содержимое NSNotification.
По сути, это простой способ реализовать уведомление без необходимости добавлять и удалять наблюдателя.
В частности, это используется только после создания объекта EAAccessory (что происходит только после подключения аксессуара), и, следовательно, использование метода подключения в настоящее время неприменимо.