Вы не можете автоматически высвобождать объекты Core Foundation.(Однако вы можете автоматически высвобождать объекты Core Foundation, которые поддерживают бесплатное мостовое соединение, например CFDataRef; см. Ответ @ newacct ниже.)
Соглашение Objective-C состоит в том, чтобы называть ваш метод так, чтобы он начинался со слова new
, чтобы указать, что вызывающая сторона ответственна за освобождение своего возвращаемого значения.Например:
+ (CFDataRef)newDataRef {
return CFDataCreate(...);
}
CFDataRef myDataRef = [self newDataRef];
...
CFRelease(myDataRef);
Если вы соблюдаете это соглашение об именах, статический анализатор XCode правильно отметит проблемы управления памятью в Core Foundation.