Когда я использую CFRelease?

Я изучаю программирование iOS.

Я написал код, связанный с адресом.

существует так много методов. как

Я разделяю группу.

здесь group1

ABAddressBookCreate();
ABRecordCopyCompositeName(argument);
ABRecordCopyValue(argument1, argument2);
ABRecordCopyValue(argument1, argument2);
ABMultiValueCopyLabelAtIndex(argument1, argument2);
ABMultiValueCopyValueAtIndex(argument1, argument2);

а другой - здесь, group2

CFArrayGetCount(argument);
CFArrayGetValueAtIndex(argument1, argument2);
ABMultiValueGetCount(argument);

Я знаю так много других методов.

но мне интересно, когда я использую метод CFRelease.

Я думаю, что group2 все методы не выполняют CFRelease

потому что они содержат слово "Get", а не выделены.

и я думаю, что группе1 все методы должны использовать CFRelease

потому что есть строка "copy".

У меня есть книга.

но там используется CFRelease дважды.

one - это выпуск ABAddressBookCreate()

другой - это ABAddressBookCopyPeopleWithName.

все другие вещи не используют CFRelease.

поэтому мне интересно, когда я использую CFRelease.

скажите, пожалуйста, когда я использую CFRelease.

Ответ 1

Если имя функции содержит "Копировать" или "Создать", то вы являетесь владельцем объекта, поэтому вы должны освободить его, когда закончите свою работу с ним. Это называется "Создать правило". Для получения дополнительной информации об управлении памятью для Core Foundation вы можете обратиться к Руководству по программированию памяти для Core Foundation

Ответ 2

Когда вы создаете объект Core Foundation или становитесь его владельцем, вы вызываете CFRelease.

Посмотрите документацию по CFMemory