2010-04-24 67 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); 

設置通知後。我刪除了它,現在正在調用。