/ / Adressbuch-Rückruf nicht angerufen - iPhone, Ziel-C, Adressbuch

Adressbuch Rückruf wird nicht aufgerufen - iphone, objective-c, Adressbuch

Ich habe eine iPhone-App, die dieAddressBook.framework und verwendet Core Data zum Speichern dieser Kontakte. Um sicherzustellen, dass ich meine eigene Datenbank aktualisiere, wenn das Adressbuch aktualisiert wird (entweder über MobileMe oder durch Bearbeitung in meiner eigenen App), abonniere ich die Benachrichtigung, wann das Adressbuch aktualisiert wird. Ich nenne das beim Start:

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

Welches (vermeintlich) nennt das bei jeder Bearbeitung. Ich habe einen ABPersonViewController, der das Editieren erlaubt, und addressBookChanged scheint nie aufgerufen zu werden.

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];
}

Gibt es einen Grund, warum es nicht angerufen wird?

Antworten:

8 für die Antwort № 1

Es stellte sich heraus, dass der Grund, warum es nicht aufgerufen wurde, ein einfacher Fehler war.

CFRelease(book);

Nach dem Einstellen der Benachrichtigung. Ich entfernte das und es wird jetzt gerufen.