Код, который я написал, работал, пока я не попытался переместить сохранение в новый поток. в ViewController.h я назначил ABAddressBookRef:
ViewController.h
ABAddressBookRef addressBook;
и в файле ViewController.m создан объект адресной книги
ViewController.m
addressBook = ABAddressBookCreateWithOptions(NULL, anError);
/// ... getting a person name and modify it. the code is OK. tested before the NSThread thing
NSThread *saveThread = [[NSThread alloc] initWithTarget:self selector:@selector(saveAddressBook:) object:(__bridge id)addressBook];
[saveThread start];
и метод saveThread:
- (void)saveAddressBook:(id)ab
{
bool didSave;
CFErrorRef error = NULL;
didSave = ABAddressBookSave((__bridge ABAddressBookRef)ab, &error);
if (didSave) { NSLog(@"Saved.");}
}
Строка ABAddressBookSave приводит к сбою приложения:
Тема 6: EXC_BAD_ACCESS (код = 1, адрес = 0x65504289)
Я знаю, что ошибка связана с ошибкой памяти, но я не могу ничего выпустить, так как использую ARC.