OSX устарела функции Bluetooth
Я следую "Руководству по доступу к устройству Bluetooth" в библиотеке Mac Developer, чтобы узнать, как реализовать сервер Mac RFCOMM. Часть руководства по добавлению определения сервиса в базу данных SDP содержит листинг кода, в котором используется устаревшая функция:
// Now that we have an IOBluetoothSDPServiceRecord object,
// we no longer need the IOBluetoothSDPServiceRecordRef.
IOBluetoothObjectRelease( serviceRecordRef );
При поиске этой функции я обнаружил несколько проектов с открытым исходным кодом, которые все еще используют эту функцию. Я также нашел несколько журналов изменений, в которых говорится, что эта функция была удалена, и я нашел некоторую документацию заголовка, в которой говорится следующее:
The ref counting scheme allows the IOBluetoothObjectRefs to be freed
when they are no longer used. When the ref count reaches zero,
the target object will be freed.
*** DEPRECATED IN BLUETOOTH 2.2 (Mac OS X 10.6) ***
You should transition your code to Objective-C equivalents. ***
This API may be removed any time in the future.
Исходя из этого, мои вопросы:
- Почему в документации Mac используется устаревшая функция?
- Что такое эквивалент Objective-C?
1 ответ
Решение
Видимо:
IOBluetoothAddServiceDict
функция также устарела (но все еще доступна). Вместо этого я должен использовать
+[IOBluetoothSDPServiceRecord publishedServiceRecordWithDictionary:]
который, кажется, не требует использования функции релиза.