В чём разница между CFDictionary и CFMutableDictionary?

Рейтинг: 3Ответов: 2Опубликовано: 05.02.2015

Здравствуйте, участники форума. Мой вопрос отражён в заголовке. Можно ли выполнить какое-либо приведение типа, чтобы свести CFMutableDictionary к CFDictionary. Заранее спасибо за помощь!)))

Ответы

▲ 4Принят

Не совсем приведение, но может CFDictionaryCreateCopy подойдет :

@function CFDictionaryCreateCopy
Creates a new immutable dictionary with the key-value pairs from the given dictionary.

Пример:

CFMutableDictionaryRef dict = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
    ...    
CFDictionaryRef copy = CFDictionaryCreateCopy(NULL, dict);
CFRelease(dict);
▲ 1

Разглядывание http://www.opensource.apple.com/source/CF/CF-476.14/CFDictionary.h показало, что все эти ...ref типы, по сути, void *.

Может, попробовать через такие приведения типа (только позволит ли компилятор?).

(Правда, стоит отметить, что mutable реально отличается по крайней мере флагами в дескрипторе хэш-таблицы, так что гарантировать работоспособность, не изучая тщательно код, не получится.)