私の状況では、私のアプリはコア データを使用しており、そのコア データから画像を読み込んでテーブル ビューに表示する必要があります。これには時間がかかるため、バックグラウンド スレッドで実行する必要があります。だから私はこのようなコードを持っています:
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];
});
});
これにより、プロセスが大幅に高速化され、準備が整うと画像が背景に表示されます。
問題は、フォアグラウンド スレッドがバックグラウンド スレッドと同時にコア データにアクセスしようとする場合があることです。これは気に入らないので、クラッシュします。これは、多くの開発者が陥る状況であり、解決策があるはずです。両方が同時にコア データへのアクセスを開始したときにアプリがクラッシュしないように、状況に対処する方法を知りたいですか?