我的情况是我的应用程序使用核心数据,并且需要从该核心数据加载图像以显示在表格视图中。由于这样做需要时间,它需要在后台线程中运行。所以我有这样的代码:
dispatch_async(queue, ^{
if (self.cellInfo.numberOfMediaItems > 0) {
int i = 0;
int numberOfThumbnails = MIN(self.cellInfo.numberOfMediaItems, 3);
while (i < numberOfThumbnails) {
Media *media = [self.entry.media objectAtIndex:i];
UIImage *image = [media getThumbnail];
[self.mediaArray addObject:image];
i++;
}
}
dispatch_async(dispatch_get_main_queue(), ^{
self.isFinishedProcessing = YES;
[self setNeedsDisplay];
});
});
这大大加快了该过程,并且图像在准备就绪时出现在背景中。
问题是,有时它会让前台线程与后台线程同时尝试访问核心数据。它不喜欢这样,所以它崩溃了。这一定是很多开发人员都会遇到的情况,因此有一个解决方案。我想知道如何处理这种情况,以便我的应用程序在它们同时开始访问核心数据时停止崩溃?