未调用通讯簿回调
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);
设置通知后。我删除了它,现在它被调用了。
【讨论】:
以上是关于未调用通讯簿回调的主要内容,如果未能解决你的问题,请参考以下文章