未调用通讯簿回调

Posted

技术标签:

【中文标题】未调用通讯簿回调【英文标题】:Address Book callback not called 【发布时间】:2010-04-24 23:59:30 【问题描述】:

我有一个使用 AddressBook.framework 并使用 Core Data 存储这些联系人的 iPhone 应用程序。为了确保在更新通讯簿时我更新自己的数据库(无论是通过 MobileMe 还是在我自己的应用程序中编辑),我订阅了关于通讯簿何时更新的通知。我在启动时调用它:

ABAddressBookRef book = ABAddressBookCreate();
ABAddressBookRegisterExternalChangeCallback(book, addressBookChanged, self);

它(据说)在任何编辑时都会调用它。我有一个允许编辑的 ABPersonViewController,并且 addressBookChanged 似乎永远不会被调用。

void addressBookChanged(ABAddressBookRef reference, CFDictionaryRef dictionary, void *context) 
    // The contacts controller we need to call
    ContactsController *contacts = (ContactsController *)context;

    // Sync with the Address Book
    [contacts synchronizeWithAddressBook:reference];

有什么理由不被调用吗?

【问题讨论】:

【参考方案1】:

事实证明,它没有被调用的原因是一个简单的错误。我做到了:

CFRelease(book);

设置通知后。我删除了它,现在它被调用了。

【讨论】:

以上是关于未调用通讯簿回调的主要内容,如果未能解决你的问题,请参考以下文章

Lync Server 2013客户端通讯簿报错404

iPhone 通讯簿 - 自动选择电话所有者

Rapleaf通讯簿API

iPhone 通讯簿 - 总是从默认组中提取

ExchangeServer2016 HAB 分层通讯簿 设置教程

尝试更新通讯簿中的标签电话号码