僵尸错误与ABAddressBookCreate

时间:2012-10-23 05:05:01

标签: iphone

我在模拟器和设备上看到了这个Zombies问题:

  • [Not A Type class]:发送到解除分配的实例0x5bf9450
  • 的消息

产生此问题的代码不能再简单了。

+ (void) testAllocateAndDeallocteAddressBook
{
  ABAddressBookRef addressBookRef = ABAddressBookCreate();

  NSAssert(addressBookRef != NULL, @"ABAddressBookCreate() returned NULL");

  CFRelease(addressBookRef);

  return;
}

我不明白为什么这个CFRelease()会导致此错误。我读过的关于此URL的所有Apple文档都表明应该调用CFRelease()来释放引用。

1 个答案:

答案 0 :(得分:0)

也许这就是问题所在。这是关于苹果页面的讨论。

对返回的地址簿所做的更改将反映在地址簿数据库中 只有在使用ABAddressBookSave保存地址簿之后。

在iOS 6.0及更高版本中,如果调用者无权访问通讯簿数据库:

对于针对iOS 6.0及更高版本链接的应用,此函数返回NULL。 对于与以前版本的iOS链接的应用,此函数返回一个 空的只读数据库。