gpt4 book ai didi

objective-c - dispatch_async 比 performSelectorInBackground 慢 :?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:31:48 26 4
gpt4 key购买 nike

在我的应用程序中,我使用 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];
});

代码似乎可以工作,但现在我的图片加载速度比以前慢了。当用户滚动浏览图像时,这会导致出现黑色图像。

我的应用程序包含某种照片卷轴。我不能使用苹果的平铺示例代码,因为它会大大增加应用程序的大小。我用 this从磁盘加载图像的代码片段。

最佳答案

我之前在其他类似问题上说过,在全局队列上使用分派(dispatch)异步会导致类似同步的行为,尤其是对于最终更新 UI 的代码。 YMMV 但是当我尝试它时,它或多或少与同步调用的结果相同。创建并使用您自己的队列,或(创建并使用您自己的队列)与 NSOperations。

我相信这是因为即使代码技术上是异步的,发布到全局队列的任何事件都会消耗队列处理时间。不要将全局队列用于后台操作。

使用自定义队列并抽取您自己的运行循环。

关于objective-c - dispatch_async 比 performSelectorInBackground 慢 :?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12561093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com