【发布时间】:2013-08-02 06:37:08
【问题描述】:
这是保存更改后重新加载我的通讯录的功能,行
self.addressbook=ABAddressbookCreateWithOptions()
和
self.contactAdd=ABAddressBookCopyArrayOfAllPeople(self.addressBook)
显示为潜在的内存泄漏点。
contactAdd 是 CFArrayRef 类型,地址簿是 ABAddressBookRef
-(void)reloadAddressBook
{
// if(self.addressBook)
// CFRelease(self.addressBook);
self.addressBook = ABAddressBookCreateWithOptions(NULL,NULL);
if(ABAddressBookHasUnsavedChanges(self.addressBook))
{
ABAddressBookSave(self.addressBook,NULL);
}
// if(self.contactAdd)
// CFRelease(self.contactAdd);
self.contactAdd=ABAddressBookCopyArrayOfAllPeople(self.addressBook);
}
【问题讨论】:
-
把你的相关代码放在这里:)
-
你以后要释放这个对象
temp吗? -
在分配时使用_bridge_transfer,因为您分配给CFArray,它是核心基础数组,没有释放或释放数组的方法。要将其降落在保留上,请使用 _bridge 释放目标 C 的土地。
-
@AshutoshMishra 我给的每个 CFRelease 都显示出潜在的内存泄漏..
-
@AshutoshMishra:“它是核心基础框架类,所以存在一些漏洞”是过于简单化了。如果您从 CF 或基于 CF 的东西中获取对象,则需要清理它。 CF 不一定意味着泄漏,仅仅因为涉及到 CF 而接受泄漏是草率的编程。
标签: ios xcode addressbookui