Поэтому каждый раз, когда нажимается кнопка, у меня следующий вызов:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self populateSpotVenueIndex];
});
-(void)populateSpotVenueIndex
{
@synchronized(self.spotsResults) {
[self.pollVenueIndex removeAllObjects];
PFQuery * query = [PFQuery queryWithClassName:@"Venue"];
for (PFObject * poll in self.spotsResults)
{
[query getObjectInBackgroundWithId:((PFObject *)[poll objectForKey:@"parent"]).objectId block:^(PFObject * object, NSError * error){
if (!error && [object objectForKey:@"name"] && [poll objectForKey:@"question"]) {
[self.pollVenueIndex setObject:[object objectForKey:@"name"] forKey:[poll objectForKey:@"question"]];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
//[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}else
NSLog(@"Error is %@", [error userInfo]);
}];
}
}
}
Когда я вызываю это в первый раз, это нормально, но вызывая его во второй раз, происходит сбой со следующей ошибкой:
Когда я даю время этому потоку завершить и вызвать его снова, это дает мне следующее:
Я считаю, что это потому, что я пытаюсь использовать self.spotsResults, который в настоящее время используется другим потоком ... так как мне решить эту проблему?