请参阅此代码示例:
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 崩溃,但我想知道处理这种情况的最佳方法是什么。它最常发生在用户导航到需要几秒钟才能加载的页面,但随后决定在当前页面仍在加载时返回上一页。
我可以想象在尝试添加子视图之前要检查某种全局标志,但这似乎很老套。