Правильный способ установить переменную экземпляра addressBook? - PullRequest
1 голос
/ 02 декабря 2010

Может быть, кто-то может ответить на этот вопрос легко.Я работал над приложением для iphone, где можно было получить информацию для каждой строки в cellForRowAtIndexPath. Я каждый раз создавал новую адресную книгу, вызывая:

ABAddressBookRef addressBook = ABAddressBookCreate ();

Это отлично работает, кромеон медленный и не чувствует себя правильно, создавая новую АБ для каждой строки.Поэтому я создал переменную экземпляра адресной книги, но не могу использовать ее без сбоев.(Программа получила сигнал: «EXC_BAD_ACCESS».) Я полагаю, что я не правильно все настраиваю, но мне не повезло найти что-то конкретно об этом в документации.

Заранее спасибо миллиону любомукто может помочь.

В моем файле .h я сделал это:

ABAddressBookRef addressBook;


@property(nonatomic, readwrite) ABAddressBookRef addressBook;

Затем в моем файле .m:

-(id)initWithStyle:(UITableViewStyle)style
{
    if (self = [super initWithStyle:style]) {

        addressBook = ABAddressBookCreate();
    }

    return self;
}

1 Ответ

0 голосов
/ 02 декабря 2010

Когда вы выпускаете адресную книгу по CFRelease (addressBook)?Если памяти недостаточно, ABAddressBookCreate () вернет нулевой объект.API addressBook.framework на основе C не может работать с нулевым объектом, и он завершится с ошибкой «EXC_BAD_ACCESS».

...