bool _WebTryThreadLock(bool),0xa871560:不允许在网络线程上进行多次锁定!请提交一个错误。现在崩溃了

时间:2013-08-23 10:39:23

标签: iphone ios

当我尝试推送一个视图控制器时,我遇到了错误的访问错误。它是随机错误,有时会发生。有一个类我使用CFRunLoopRun();,一旦我推动该类,那么只有这个错误来了。我正在尝试,但问题仍然没有解决。

让我向您展示我使用CFRunLoopRun();的代码。如果我做错了,请告诉我。

bool _WebTryThreadLock(bool), 0xa871560: Multiple locks on web thread not allowed! Please file a bug. Crashing now...
1   0x5068c88 WebRunLoopLock(__CFRunLoopObserver*, unsigned long, void*)
2   0x2eb6afe __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
3   0x2eb6a3d __CFRunLoopDoObservers
4   0x2e94704 __CFRunLoopRun
5   0x2e93f44 CFRunLoopRunSpecific
6   0x2e93e1b CFRunLoopRunInMode
7   0x5068c50 RunWebThread(void*)
8   0x9465a5b7 _pthread_start
9   0x94644d4e thread_start


 [self fatchAllEvent];
     CFRunLoopRun();   // i want to wait until above method get executed 

-(void)fatchAllEvent{

     events = [[NSMutableArray alloc]init];
        eventStore = [[EKEventStore alloc] init];

    if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)])
    {

                  [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
         {

             if (granted)
             {                 
                 [self performSelectorOnMainThread:@selector(waitAsItoldYou)
                                        withObject:nil
                                     waitUntilDone:YES];

                    CFRunLoopStop(CFRunLoopGetMain());

                // NSLog(@"LOOP has STOP");
                               }
         }];
    }
}

其他一切都很完美,但这个错误发生了。我已经阅读了人们面临的类似问题的解决方案,但没有一个是有用的。有什么指针吗?

1 个答案:

答案 0 :(得分:3)

有重新装载的表,错误来了。 tableView reloadData命令也不是线程安全的。

dispatch_async(dispatch_get_main_queue(), ^{ 

    [self.tableView reloadData];
});