我调用ABAddressBookCopyPeopleWithName(book,fullname);这应该为所有与AddressBook中的'fullname'匹配的名称返回ABRecords数组。由于它的名称中有一个'Copy',因此我将释放保留计数为1的返回值。 如果它找不到任何匹配的名称怎么办?我还应该发布吗?空对象是否设置为nil?或者它只是空的,调用release会导致崩溃?
答案 0 :(得分:2)
是的,如果名称中有“复制”,则应将其释放。如果它返回一个ABRecords数组,那么就是为你保留的数组本身。如果数组为空并且未找到任何名称,则仍需要将其释放。
虽然我没有使用过这个函数,但这可能是一个不遵循Cocoa命名约定的边缘情况。要检查,请调用该方法,然后说:
NSLog(@"%d", [resultArray retainCount]);
这将告诉您阵列上的保留计数是什么,因此您可以100%确定在必要时释放它。
希望有所帮助!