У меня есть код, который выглядит следующим образом:
CFDictionaryRef myFunction()
{
CFIndex myNumberIndex = 1234;
CFNumberRef myNumber = NULL;
CFMutableDictionaryRef theDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, 0, 0);
myNumber = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &myNumberIndex);
CFDictionaryAddValue(theDict, kSomeKeyConstant, myNumber);
return theDict;
}
Статический анализатор clang сообщает, что myNumber
является объектом утечки. Очевидно, поскольку нет вызова CFRelease()
, я склонен понять проблему, но я недостаточно хорошо разбираюсь в CF в целом, поэтому я хочу проверить: нужно ли здесь выпускать myNumber
, даже если он добавлен в CFDictionary, который получает вернулся? То есть... я добавляю в словарь копию, имеющую свои собственные потребности в сохранении/выпуске (в этом случае мне нужно выпустить ее здесь)? Я предполагаю, что ответ связан с параметром kCFAllocatorDefault
, который использовался при создании словаря, но я не вижу четкого указания на принадлежность объекта.