【问题标题】:iOS: unreleased dispatch queueiOS:未发布的调度队列
【发布时间】:2013-07-24 10:15:09
【问题描述】:

因此,为了下载和显示图像,我曾经这样做过:

dispatch_async(dispatch_queue_create("bgQ", 0), ^{
    // download image
    dispatch_async(dispatch_get_main_queue(), ^{
        // display iamge
    });
});

但我意识到这样我并没有释放调度队列。 那么问题来了,我们需要单独声明队列以便稍后释放它还是可以在第一个示例中以某种方式释放队列?

我们需要这样做吗?:

dispatch_queue_t bgQ = dispatch_queue_create("bgQ", 0);

dispatch_async(bgQ, ^{
    // download image
    dispatch_async(dispatch_get_main_queue(), ^{
        // display iamge
    });
});

dispatch_release(bgQ);

【问题讨论】:

    标签: ios objective-c release grand-central-dispatch


    【解决方案1】:

    你可以试试这个

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        // download image
         dispatch_async(dispatch_get_main_queue(), ^{
        //display image
        }
        }
    

    或下载图片试试这个 AsyncImageView

    【讨论】:

    • 我记得在某处看到我们不应该使用 dispatch_get_global_queue,无论出于何种原因
    • 感谢链接,但我已经知道异步imageview的实现,我的问题只是针对使用dispatchH_async和处理dispatch_queues的原理
    • 没关系,我记得建议不要使用 get_global_queue,而是 get_current_queue。感谢您的回答!
    • 很高兴为您提供帮助@ZoltánMatók
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多