Bluetooth в Mac OS из Python: комментарии к коду
Пока не забыл, что происходит в коде к предыдущей заметке, опишу для себя.
Первая строка после импортов — загрузка, собственно, самого АПИ, загружается разделяемая библиотека, находящаяся по указанному пути. Далее определяется
В этой связи, объекту приходится ставить специальные подпорки — посмотрите на последнюю строку, там вызывается метод new
В методе getfounddevices я вызываю метод, запускающий сканирование, и дожидаюсь, когда один из методов (deviceInquiryDeviceFound_device_, вызывающийся на успешном скане или deviceInquiryComplete_error_aborted_, который вызывается, если произошла ошибка или ничего не найдено) установит флаг, что сканирование завершено.
Цикл ожидания (единственный while в коде) для меня опять же является магией, я лишь могу предположить, что он позволяет обрабатывать поступающие события, простой цикл со sleep не даёт никакого эффекта. Потом я возвращаю имена и адреса найденных устройств.
Декораторы objc.typedSelector указывают сигнатуру вызываемого объекта и позволяют указать как именно будут переданы параметры. До конца эта магия мне пока непонятна.
Например, «v@:@iB» расшифровывается как «void», «объект», «селектор метода», «объект», «int», «булевое». Т. е. метод ничего не возвращает, потом идут параметры: никаких идей что такое
Всё что перечисленно через подчёркивание — это имена сообщений, в терминах
Комментарии 2
Это, кажется, «замангленные» имена функций.