使用 ABAddressBookRef 从 phone 簿中检索联系人时应用程序崩溃

Application crashes while retrieving contacts from phone book by using ABAddressBookRef

Application crash when facebook contact syncing is ON from settings.

 While getting normal phone contact ABRecordRef returns "CPRecord: 0x15fd77510 ABPerson".
   While getting facebook contact ABRecordRef returns (ABRecordRef) person = 0x3ff0000000000000.

代码

     ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
            ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
            CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);
            CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);
    for (int i = 0; i < nPeople; i++)
    {
        ContactsData *contacts = [ContactsData new];

        ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);

        //get First Name and Last Name
        contacts.firstNames = (__bridge NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
        contacts.lastNames =  (__bridge NSString*)ABRecordCopyValue(person, kABPersonLastNameProperty);

        if (!contacts.firstNames) {
            contacts.firstNames = @"";
        }
        if (!contacts.lastNames) {
            contacts.lastNames = @"";
        }

        //get Phone Numbers

        NSMutableArray *phoneNumbers = [[NSMutableArray alloc] init];

        ABMultiValueRef multiPhones = ABRecordCopyValue(person, kABPersonPhoneProperty);
        for(CFIndex i=0;i<ABMultiValueGetCount(multiPhones);i++) {

            CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(multiPhones, i);
            NSString *phoneNumber = (__bridge NSString *) phoneNumberRef;
            if (![phoneNumber isEqualToString:@""]) {
                [phoneNumbers addObject:phoneNumber];
            }
        }
        if ([phoneNumbers count] != 0) {
            [contacts setNumbers:phoneNumbers];
        }
    }
}

检查以下代码:

ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
    ABRecordRef source = ABAddressBookCopyDefaultSource(addressBook);
    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(addressBook, source, kABPersonSortByFirstName);
    CFIndex nPeople = CFArrayGetCount(allPeople);