Доступ к ключам трассировки в NSDictionary, используемом Apple Bluetooth API

Apple Bluetooth API не говорит, какой словарь конфигурации должен быть предоставлен для [IOBluetoothDevice openL2CAPChannelSync:withPSM:withConfiguration:delegate:].

Ключи/значения, которые я должен предоставить, мне неизвестны. Чтобы преодолеть это, я хочу отправить пустой словарь на вызов API, но за кулисами - отслеживать, к каким ключам осуществляется доступ.

Как мне создать подкласс NSDictionary, который будет NSLog получать доступ к ключам?


person eyalw    schedule 31.08.2011    source источник
comment
Что ж, как вы сказали, вы можете создать подкласс NSDictionary и NSLog для доступа к ключам. Я думаю, что ваш вопрос нуждается в небольшом пояснении, или я просто устал...   -  person Kheldar    schedule 31.08.2011
comment
У меня есть эта функция: doSomething(dict). Я не знаю, какие ключи/значения doSomething ожидает найти в dict. поэтому я хочу узнать, к каким ключам обращаются. (в частности, какой словарь конфигурации необходим для [IOBluetoothDevice openL2CAPChannelSync:withPSM:withConfiguration:delegate:]   -  person eyalw    schedule 31.08.2011
comment
Я попытался переопределить @implementation NSDictionary (TracingMsg) - (id)objectForKey:(id)aKey {.... но это не сработало   -  person eyalw    schedule 31.08.2011
comment
Если я вас правильно понял, вам просто нужно написать NSLog(myLog, %@, key); в нужное место, за исключением того, что у вас нет доступа к источнику doSomething и, следовательно, вы никогда не сможете NSLog ключ?   -  person Kheldar    schedule 31.08.2011
comment
Моя проблема в том, что Apple Bluetooth API не говорит, какой словарь конфигурации должен быть предоставлен для [IOBluetoothDevice openL2CAPChannelSync:withPSM:withConfiguration:delegate:]   -  person eyalw    schedule 31.08.2011
comment
Попробуйте поставить точку останова поверх вызова doSomething и следовать за отладчиком в этот вызов с помощью «step into»?   -  person Kheldar    schedule 31.08.2011
comment
@eyalw давайте продолжим это обсуждение в чате   -  person Kheldar    schedule 31.08.2011


Ответы (1)


Варианты IOBluetoothDevice следует искать в IOBluetoothDevice.h:

// These are for the configuration of L2CAP Channels:
#define kIOBluetoothL2CAPChannelMaxAllowedIncomingMTU       @"MaxAllowedIncomingMTU"
#define kIOBluetoothL2CAPChannelDesiredOutgoingMTU          @"DesiredOutgoingMTU"
person Rob Napier    schedule 31.08.2011
comment
Вы случайно не знаете, как я устанавливаю конфигурацию QoS канала? (например, «Гарантия» или «Самое лучшее усилие») - person eyalw; 31.08.2011
comment
Я не знаю, что это настраивается. Это часть перечисления BluetoothL2CAPConfigurationOption, но нет общедоступной функции, которая принимает это перечисление, и нет общедоступной функции, возвращающей BluetoothL2CAPConfigurationResult. Это говорит о том, что нет общедоступного способа установить такую ​​​​конфигурацию. Большая часть IOKit имеет открытый исходный код, но не раздел IOBluetooth. - person Rob Napier; 31.08.2011