-
Выделить основной используемый API классов
CBCentralManager
иCBPeripheral
из 'CoreBluetooth framework' в протоколы -
Создать прокси объекты которые удовлетворяют выделенным протоколам
-
Добавить доп функционал в эти прокси классы:
- Они являются делегатами классов
CBCentralManager
иCBPeripheral
(удовлетворяют протоколамCBCentralManagerDelegate
иCBPeripheralDelegate
cоответственно). - К каждому прокси классу можно добавить произвольное число обработчиков, при вызове метода делегата
CBCentralManagerDelegate
илиCBPeripheralDelegate
соотвествующее сообщение посылается каждому из зарегистрированных обоработчиков. Цель: разделить код обработки сообщений получаемых через методы делегата (например отделить полезный код и логгирование)
- Они являются делегатами классов
-
Заменить
CBCentralManagerDelegate
иCBPeripheralDelegate
аналогичными протоколами обработчиков (с аналогичным набором методов) -
Заменять другие классы из
CoreBluetooth
(напримерCBService
илиCBCharacteristic
) на соответствующие прокси-классы не нужно -
Добавлена реализация блочных обработчиков
-
Для конкретных классов обработчиков предлагается базовый класс, которых позволяет задат поток (thread) в котором будут вызваться блоки обработчиков
-
таким образом можно получать сообщения от CBCentralManager и CBPeripheral в одном потоке,а обрабатывать в другом
-
BTError
- base class for any error produced or wrapped by framework -
CustomStringConvertible
&CustomDebugStringConvertible
protocols support for BTError class and subclasses