このコード サンプルを参照してください。
dispatch_queue_t downloadQueue=dispatch_queue_create("test", NULL);
dispatch_async(downloadQueue, ^{
//do some core data fetching stuff
//create UIImage
//Need to go back to the main thread since this is UI related
dispatch_async(dispatch_get_main_queue(), ^{
if(someView)
{
[someView addSubview:self];
}
}
});
});
dispatch_release(downloadQueue);
このコードのメイン スレッド部分が実行されるまでに「someView」が存在しない場合はどうなるでしょうか。明らかに、これにより EXC_BAD_ACCESS クラッシュが発生しますが、この状況を処理する最善の方法は何かと考えています。ロードに数秒かかるページにユーザーが移動した後、現在のページがまだロードされている間に前のページに戻ることを決定した場合に最もよく発生します。
サブビューを追加しようとする前に、ある種のグローバルフラグをチェックすることを想像できましたが、それはハッキリしているようです。