地址簿框架,应用程序冻结,同时保存

时间:2014-07-04 13:06:45

标签: ios xcode abaddressbook ios7.1

我正在编写一个用于编辑地址簿组的应用程序,它运行了很多更改,例如从书中删除所有联系人,添加所有联系人等等。问题是,当方法运行时,应用程序冻结了UI,我理解它是因为在主线程中运行而发生的,但是当我尝试在后台运行时,它会出现崩溃和组中错误更改等问题。谁能帮我解决这个问题?

我认为在很多时候运行它会阻止我的UI:

ABAddressBookSave(_addressBookRef, &cfError);

1 个答案:

答案 0 :(得分:0)

第一个解决方案:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 
                                         (unsigned long)NULL), ^(void) {
   <Write your method here>
});

第二个解决方案:

- (void)syncPersonOutOfAddressBook
{
    [NSThread detachNewThreadSelector:@selector(syncContactsThread) toTarget:self withObject:nil];
}

-(void)syncContactsThread{
    if([self getAccessPermission]){
        ABAddressBookRef addressBook;
        CFErrorRef error = nil;
        addressBook = ABAddressBookCreateWithOptions(NULL,&error);
        [self AddressBookUpdated:addressBook]; //this is method is to get address from device
    }

}

了解更多信息click here