gpt4 book ai didi

objective-c - dispatch_queue_t需要使用dispatch_release()来释放吗?

转载 作者:可可西里 更新时间:2023-11-01 03:25:25 25 4
gpt4 key购买 nike

我有两个异步的 GCD block 。第一个用于后台线程,第二个在主线程上运行。这很好用,但我刚刚看到有人说我可能需要使用 dispatch_release() 来释放它们。例如:

// Use gcd
dispatch_queue_t queue = dispatch_queue_create("com.awesome", 0);
dispatch_queue_t main = dispatch_get_main_queue();

// do the long running work in bg async queue
// within that, call to update UI on main thread.
dispatch_async(queue, ^{
// Do work in the background



// Release
dispatch_release(queue);

dispatch_async(main, ^{

// Main


// Release
dispatch_release(main);

});//end
});//end

这是真的吗?我需要在这里发布它们吗?

最佳答案

你只需要释放使用dispatch_queue_create创建的队列。主队列会一直存在,释放它没有意义。

添加到队列中的任何 block 都将保留队列本身,因此您可以在 dispatch_async 调用之后安全地调用 dispatch_release(queue)。最好在您在此处编写的代码之后在 block 外执行此操作。

关于objective-c - dispatch_queue_t需要使用dispatch_release()来释放吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422854/

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