当我尝试推送一个视图控制器时,我遇到了错误的访问错误。它是随机错误,有时会发生。有一个类我使用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");
}
}];
}
}
其他一切都很完美,但这个错误发生了。我已经阅读了人们面临的类似问题的解决方案,但没有一个是有用的。有什么指针吗?
答案 0 :(得分:3)
有重新装载的表,错误来了。 tableView reloadData
命令也不是线程安全的。
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});