内存管理:如果Copy方法返回空,我应该发布吗?

时间:2009-12-31 05:59:50

标签: objective-c iphone memory-management

我调用ABAddressBookCopyPeopleWithName(book,fullname);这应该为所有与AddressBook中的'fullname'匹配的名称返回ABRecords数组。由于它的名称中有一个'Copy',因此我将释放保留计数为1的返回值。 如果它找不到任何匹配的名称怎么办?我还应该发布吗?空对象是否设置为nil?或者它只是空的,调用release会导致崩溃?

1 个答案:

答案 0 :(得分:2)

是的,如果名称中有“复制”,则应将其释放。如果它返回一个ABRecords数组,那么就是为你保留的数组本身。如果数组为空并且未找到任何名称,则仍需要将其释放。

虽然我没有使用过这个函数,但这可能是一个不遵循Cocoa命名约定的边缘情况。要检查,请调用该方法,然后说:

NSLog(@"%d", [resultArray retainCount]);

这将告诉您阵列上的保留计数是什么,因此您可以100%确定在必要时释放它。

希望有所帮助!