从主线程中删除 AlamofireImage responseImage

Posted

技术标签:

【中文标题】从主线程中删除 AlamofireImage responseImage【英文标题】:Remove AlamofireImage responseImage from main thread 【发布时间】:2016-12-28 21:10:05 【问题描述】:

简单地说,我正在尝试使用AlamofireImage 在服务器上下载图像,似乎负责此操作的 DataRequest 扩展返回主线程上的内容。

这是有问题的,因为它在继续处理时不可避免地会锁定 UI。

见附图,断点暂停主线程的执行(左侧)

如何迁移此 DataRequest 以使用非主操作队列?

【问题讨论】:

或许@cnoon 能提供一些见解? 我认为过滤器功能是锁定主线程的东西。我认为您应该尝试在不同的线程上应用过滤器。祝你好运! 是的,这是罪魁祸首。虽然这不能回答完整的问题,但我希望在子线程上拥有整个 responseImage 回调。 @timaktimak 【参考方案1】:

我在 responseImage 函数中添加了一个可选的队列参数,以便可以使用任意的DispatchQueue 来运行completionHandler

这是叉子:

pod 'AlamofireImage', :git => 'https://github.com/timaktimak/AlamofireImage.git', :branch => 'master'

编辑:它已被合并,因此 AlamofireImage 现在具有在自定义 DispatchQueue 上调用完成块的功能。

希望对你有帮助!

【讨论】:

以上是关于从主线程中删除 AlamofireImage responseImage的主要内容,如果未能解决你的问题,请参考以下文章

从主循环访问线程变量 - c++ - windows

从主函数向线程发送信号?

从主线程的资产目录中加载图像?

在C ++中是否可以从主线程中执行辅助线程中运行的函数?

如何从主线程超时java线程?

在 Apple 的 Cocoa API 中,为啥从主线程调用 NSApplicationMain 很重要?