---
title: ABExternalChangeCallback
framework: addressbook
role: symbol
role_heading: Type Alias
path: addressbook/abexternalchangecallback
---

# ABExternalChangeCallback

Prototype for a function callback invoked on an address book when the Address Book database is modified by another address book instance.

## Declaration

```swift
typealias ABExternalChangeCallback = (ABAddressBook?, CFDictionary?, UnsafeMutableRawPointer?) -> Void
```

## Parameters

- `addressBook`: An address book used to interact with the Address Book database.
- `info`: Always NULL.
- `context`: The object to pass to the callback function.

## Discussion

Discussion If you name your callback function MyAddressBookExternalChangeCallback, you declare it like this: Discussion Use ABAddressBookRegisterExternalChangeCallback(_:_:_:) to register and ABAddressBookUnregisterExternalChangeCallback(_:_:_:) to unregister the callback function. You can register for a callback with different contexts or callback functions. The run loop on the thread that registered the callback invokes the callback. The addressBook object does not take any action to flush or synchronize cached state with the Address Book database. If you want to ensure that addressBook doesn’t contain stale values, use ABAddressBookRevert(_:).

## See Also

### Deprecated

- [ABAddressBookRequestAccessCompletionHandler](addressbook/abaddressbookrequestaccesscompletionhandler.md)
- [ABMultiValueIdentifier](addressbook/abmultivalueidentifier.md)
- [ABPersonCompositeNameFormat](addressbook/abpersoncompositenameformat.md)
- [ABPersonSortOrdering](addressbook/abpersonsortordering.md)
- [ABPropertyID](addressbook/abpropertyid.md)
- [ABRecordID](addressbook/abrecordid.md)
- [ABRecordType](addressbook/abrecordtype.md)
- [ABSourceType](addressbook/absourcetype.md)
