HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在后台线程中加载UIImage大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在后台线程中加载UI Image而不会导致线程问题?
如果不是最好的方法是什么?我正在使用iOS 8.这就是我现在这样做的方式:
dispatch_queue_t BACkgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0);
    dispatch_async(BACkgroundQueue,^{
        UIImage *image = [UIImage imagenamed: filename];

        // only @R_674_9531@e UI on the main thread
        dispatch_async(dispatch_get_main_queue(),^{
            [self setImage: image];
        });

    });

解决方法

你正在做的是结构合理,但我不知道imagenamed是否是线程安全的 – 我没有理由相信它是.除非文档另有说明,否则您应该始终认为事情不是线程安全的.在这种情况下,它不是 documentation specifically says

在我看来,你应该问自己是否需要这样做. imagenamed:包含一个缓存机制,可以减轻您担心的任何问题.无论如何,过早优化会浪费你的时间和智力.这里真的有问题吗?用仪器找出;不要使用直觉或本能.

如果问题是您的图像太大而且格式选择不当 – 例如,您使用的是非常大的JPEG – 那么最好集中精力纠正它.

编辑iOS 9文档现在说:“在iOS 9及更高版本中,此方法是线程安全的.”这表明我的答案都是正确的,问题现在已经解决了.

大佬总结

以上是大佬教程为你收集整理的ios – 在后台线程中加载UIImage全部内容,希望文章能够帮你解决ios – 在后台线程中加载UIImage所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。