Я полностью озадачен тем, как этот код может вызвать ошибку сегментации. Код работает нормально на 10.5+, но ошибки сегмента на 10.4. Есть идеи? Ошибка возникает во время CFNumberGetValue.
CFNumberRef volume_num = (CFNumberRef)CFDictionaryGetValue(dict, CFSTR("Volume"));
if(volume_num != NULL) {
float volume = 1.f;
CFNumberGetValue(volume_num, kCFNumberFloatType, &volume);
};
РЕДАКТИРОВАТЬ: код выше получает значение, которое было добавлено в словарь с помощью кода ниже. mKitManager.GetKitVolume () возвращает значение по умолчанию 1,0.
AddFloatToDictionary(dict, CFSTR("Volume"), mKitManager.GetKitVolume());
static void AddFloatToDictionary(CFMutableDictionaryRef dict, CFStringRef key, float value)
{
CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &value);
CFDictionarySetValue(dict, key, num);
CFRelease(num);
}