Я пытаюсь создать новый контакт и добавить его в адресную книгу, но когда я попадаю в строку кода ABAddressSave, я получаю EXC_BAD_ACCESS. Я не вижу, что я делаю неправильно, я включил NSZombie, чтобы проверить, не связана ли это с ошибкой памяти, но не обнаружила ее. Кто-нибудь может сказать мне, что не так с этим кодом? Заранее спасибо!
CFErrorRef error = NULL;
ABAddressBookRef iPhoneAddressBook = ABAddressBookCreate();
ABRecordRef newRecord = ABPersonCreate();
ABRecordSetValue(newRecord, kABPersonFirstNameProperty, @"Xxxxxx", &error);
ABRecordSetValue(newRecord, kABPersonURLProperty, @"Yyyyyy", &error);
//Add phone numbers to record
ABMutableMultiValueRef phones = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(phones, @"1-555-555-5555", kABWorkLabel, NULL);
ABRecordSetValue(newRecord, kABPersonPhoneProperty, phones, &error);
CFRelease(phones);
//Add email address to record
ABMutableMultiValueRef emails = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(emails, @"xxx_xxx@yahoo.com", kABWorkLabel, NULL);
ABRecordSetValue(newRecord, kABPersonEmailProperty, emails, &error);
CFRelease(emails);
ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDict = [[NSMutableDictionary alloc] init];
[addressDict setObject:@"xxx1" forKey:(NSString *)kABPersonAddressStreetKey];
[addressDict setObject:@"xxx2" forKey:(NSString *)kABPersonAddressCityKey];
[addressDict setObject:@"xxx3" forKey:(NSString *)kABPersonAddressStateKey];
[addressDict setObject:@"xxx4" forKey:(NSString *)kABPersonAddressZIPKey];
ABMultiValueAddValueAndLabel(multiAddress, addressDict, kABWorkLabel, NULL);
ABRecordSetValue(newRecord, kABPersonAddressProperty, multiAddress, &error);
CFRelease(multiAddress);
[addressDict release];
ABAddressBookAddRecord(iPhoneAddressBook, newRecord, &error);
ABAddressBookSave(iPhoneAddressBook, NULL);
if(error != nil){
NSLog(@"Error creating contact:%@", error);
}