Код, который был написан мной, работал до тех пор, пока я не попытался переместить сохранение в новый поток. в ViewController.h я назначен ABAddressBookRef:ABAddressBookSave вызывает EXC_BAD_ACCESS ARC Enabled
ViewController.h
ABAddressBookRef addressBook;
и ViewController.m файла создали объект Addressbook
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.