I have an app which crashes occasionally due to the array returned by ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering() having a different size to ABAddressBookGet
ABAddressBookGetPersonCount And ABAddressBookCopyArrayOfAllPeople gives different arrays.
ABAddressBookGetPersonCount - Returns the number of person records in an address book. ABAddressBookCopyArrayOfAllPeople - Returns all the person records in an address book.
So some times same person may have extra records. That's why you may getting different sizes.