我什么时候使用CFRelease?

时间:2012-04-18 06:28:17

标签: iphone objective-c ios xcode

我正在学习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”,未分配。

我认为group1的所有方法都必须使用CFRelease

因为有一个字符串“copy”。

我有一本书。

但两次使用CFRelease。

一个是发布ABAddressBookCreate()

另一个是ABAddressBookCopyPeopleWithName。

所有其他事情都不使用CFRelease。

所以我想知道我何时使用CFRelease。

请在使用CFRelease时告诉我。

2 个答案:

答案 0 :(得分:10)

如果函数名称包含“复制”或“创建”,则您拥有该对象,因此必须在完成工作后将其释放。这称为“创建规则”。有关Core Foundation的内存管理的更多信息,请参阅Memory Management Programming Guide for Core Foundation

答案 1 :(得分:3)

当您创建Core Foundation对象或成为其所有者时,您将调用CFRelease

查看CFMemory management文档