【发布时间】:2013-12-06 19:23:24
【问题描述】:
我编写的代码一直有效,直到我尝试将保存移动到新线程。 在 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。
【问题讨论】:
标签: ios objective-c abaddressbook