在我的应用程序中,我使用performSelectorInBackground:
从磁盘加载图像。在使用dispatch_async进行一些单元测试之后,我决定用dispatch_async调用替换我的performSelectorInBackground。
dispatch_queue_t currentBackgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(currentBackgroundQueue, ^{
[self getImageFromDisk:sPath delegate:(id)delegate];
});
代码似乎有效,但现在我的图像加载速度比之前慢。当用户滚动图像时,这会导致黑色图像。
我的应用程序包含某种photoscroller。我不能使用apple的平铺示例代码,因为它会将应用程序大小增加到很多。我使用this代码段从磁盘加载图片。
答案 0 :(得分:5)
我认为这样做的原因是发布到全局队列的任何事件都将消耗队列处理时间,即使代码技术上 asynch。不要将全局队列用于后台操作。
使用自定义队列并抽取自己的runloop。