地址簿许可后的代码执行延迟

时间:2013-10-26 08:50:44

标签: ios objective-c ios7 abaddressbook

每当用户在AddressBook权限OK上按UIAlertView时,除了延迟执行这些命令外,一切都很顺利,奇怪的是这些命令执行大约需要5秒,即使{ {1}}立即打印。

相同的代码会在“日历”权限中立即生效。

有人可以帮我吗?谢谢。

延迟(5秒)后正在执行的代码

NSLog
     
   NSLog(@"Granted!");
  

完成功能

  
    

ABAddressBookRef addressBookRef =     ABAddressBookCreateWithOptions(NULL,NULL);

         

if(ABAddressBookGetAuthorizationStatus()==     kABAuthorizationStatusNotDetermined){

  
     

ABAddressBookRequestAccessWithCompletion(addressBookRef,^(bool   授予,CFErrorRef错误){

     
    

  
     

if(error)

     
 _1234.backgroundColor = [UIColor lightGrayColor];
 [_12345 setHidden:NO];
 [ _qwerty setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
 [_qwerty1 setHidden:YES];
  
     

否则if(!grant)

     
        {
            // display error message here
        }
  

1 个答案:

答案 0 :(得分:1)

你的延迟可能是因为主线程中没有执行完成块,并且必须在主线程中执行所有UI操作,在主线程中调度你的UI代码,如下所示:

dispatch_async(dispatch_get_main_queue(), ^{

    NSLog(@"Granted!"); //this gets printed instantly

    _qwerty.userInteractionEnabled = NO;

    _1234.backgroundColor = [UIColor lightGrayColor];
    [_12345 setHidden:NO];
    [ _qwerty setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
    [_qwerty1 setHidden:YES];

    [self qwerty4];
});