2014-07-04 52 views
0

我正在編寫一個編輯地址簿組的應用程序,它正在運行許多更改,如從書中刪除所有聯繫人,添加所有聯繫人等。問題是,當方法運行應用程序凍結UI,我知道這是因爲在主線程中運行而發生的,但是當我嘗試在後臺執行它時,它遇到了崩潰和組中的錯誤更改等問題。誰能幫我解決這個問題?地址簿框架,應用程序凍結時保存

我想運行在很多時候被擋住了我的UI:

ABAddressBookSave(_addressBookRef, &cfError); 

回答

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