2010-04-24 68 views
2

我有一个使用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]; 
} 

是否有任何理由不被调用?

回答

8

原来它没有被调用是一个简单的错误。我做了:

CFRelease(book); 

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