我正在学习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时告诉我。
答案 0 :(得分:10)
如果函数名称包含“复制”或“创建”,则您拥有该对象,因此必须在完成工作后将其释放。这称为“创建规则”。有关Core Foundation的内存管理的更多信息,请参阅Memory Management Programming Guide for Core Foundation
答案 1 :(得分:3)
当您创建Core Foundation对象或成为其所有者时,您将调用CFRelease
。