Я пытаюсь реализовать некоторый код, который пишет контакту, используя код из этого руководства по адресной книге . Я объявил свойство в моем ViewController.h:
@property ABRecordRef mABRecordRef;
Затем я извлекаю запись:
- (BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
На данный момент я могу успешно позвонить ABRecordSetValue
:
CFErrorRef anError = NULL;
bool didSet;
didSet = ABRecordSetValue(person, kABPersonFirstNameProperty, (CFStringRef)@"foo", &anError);
if( didSet )
{
// ...
В этом методе я также сохраняю запись:
self.mABRecordRef = person;
После некоторых действий пользователя (в другом методе) я пытаюсь использовать эту запись таким же образом:
CFErrorRef anError = NULL;
bool didSet;
didSet = ABRecordSetValue(self.ABRecordRef, kABPersonFirstNameProperty, (CFStringRef)@"foo", &anError);
Но я получаю ошибку:
EXC_BAD_ACCESS(code=2, address=0x...
Почему это? Я предполагаю (возможно, неправильно), что мой ABRecordRef
не высвобождается между моим первым и вторым использованием.
Я также пытался сохранить уникальный идентификатор этой записи, а также peoplePicker.addressBook
, затем позже извлек эту же запись обратно, но я получаю похожую ошибку.