我有一个使用 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];
}
有什么理由不叫它吗?