Использование триггеров ABRecordRef @property EXC_BAD_ACCESS - PullRequest
1 голос
/ 24 марта 2012

Я пытаюсь реализовать некоторый код, который пишет контакту, используя код из этого руководства по адресной книге . Я объявил свойство в моем 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, затем позже извлек эту же запись обратно, но я получаю похожую ошибку.

...