13

我正在学习iOS编程。

我编写了关联地址的代码。

有很多方法。喜欢

我正在分组。

这里是组 1

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。

4

2 回答 2

13

如果函数名称包含“复制”或“创建”,那么您拥有该对象,因此您必须在完成工作后释放它。这被称为“创建规则”。关于 Core Foundation 的内存管理的更多信息,可以参考 Core Foundation 的内存管理编程指南

于 2012-04-18T06:34:47.873 回答
3

当你创建一个核心基础对象或成为它的所有者时,你会调用CFRelease.

查看CFMemory 管理文档

于 2012-04-18T06:33:06.170 回答