UIImageView setHighlightedImage:它必须在主线程上吗?

时间:2017-02-03 22:22:17

标签: ios objective-c multithreading uiimageview uikit

我正致力于改善向用户显示的图像的性能。我已经删除了alpha混合,并且已经为UIImageView分配了一个缩放/正确大小的图像以及一些缓存。但是,作为其中的一部分,我正在考虑将setHiglightedImage:调用移动到后台线程。

ImageView包含在UIKit中,它表示对布局的任何修改都应该在主线程上完成。但是,在使用highlightImage分配图像时,我们不会触发任何布局更改或调用任何约束。这是否是一个不违反UIKit规则的有效变更?是否会因此而抛出任何异常?

到目前为止,在后台线程上运行此调试器时,我看不到任何问题或警告。此外,关于UIImageView的苹果官方文档(herehere)并未在后台线程中指定此内容。我尝试在网上搜索更多关于这样做的信息,但是找不到任何有用的信息

[UIImageView setHighlightedImage:] 是否有理由不在后台线程?它是否有任何性能优势?

1 个答案:

答案 0 :(得分:1)

setHighlightedImage 正在更改用户界面。你不能在后台线程上运行它。

  

在Cocoa应用程序中,主线程运行用户界面,即   是的,所有绘图和所有事件都在主线程上处理。如果你的   应用程序对其执行任何冗长的同步操作   线程,您的用户界面可能会变得无响应并触发   旋转光标。为避免这种情况,您应该缩短时间   这些操作消耗,推迟执行或移动它们   次要线程。

Apple Documentation