1.Recordobjectscannotbepassedacrossthreadssafely.Instead,youshouldpassthe corresponding record identifier
2. InstancesofABAddressBookRefcannotbeusedbymultiplethreads.Eachthreadmustmake its own instance.Use the function ABAddressBookRegisterExternalChangeCallback to register a function of the prototype ABExternalChangeCallback. You may register multiple change callbacks by calling ABAddressBookRegisterExternalChangeCallback multiple times with different callbacks or contexts. You can also unregister the function using ABAddressBookUnregisterExternalChangeCallback.
When you receive a change callback, there are two things you can do: If you have no unsaved changes, your code should simply revert your address book to get the most up-to-date data. If you have unsaved changes, you may not want to revert and lose those changes. If this is the case you should save, and the Address Book database will do its best to merge your changes with the external changes. However, you should be prepared to take other appropriate action if the changes cannot be merged and the save fails.
2. person \ groupapplication can use groups to allow the user to perform an action for several contacts in their address book at the same time.
The Address Book UI framework provides four controllers:
ABPeoplePickerNavigationController prompts the user to select a person record from their address book.
ABPersonViewController displays a person record to the user and optionally allows editing. ABNewPersonViewController prompts the user create a new person record.
ABUnknownPersonViewController prompts the user to complete a partial person record, optionally allows them to add it to the address book.
To accomplish other kinds of searches, use the function ABAddressBookCopyArrayOfAllPeople and then filter the results using the NSArray method filteredArrayUsingPredicate:.