dispatch_queue_create、dispatch_retain、dispatch_release函数的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dispatch_queue_create、dispatch_retain、dispatch_release函数的使用相关的知识,希望对你有一定的参考价值。

参考技术A 该函数的第一个参数指定Serial Dispatch Queue的名称。推荐使用应用程序ID这种逆序全程域名。
第二个参数,当生成Serial Dispatch Queue时,第二个参数设置NULL。
当生成Concurrent Dispatch Queue,指定为DISPATCH_QUEUE_CONCURRENT

通过dispatch_queue_create函数生成的Dispatch Queue在使用结束后通过dispatch_release函数释放。

该名称中含有release,由此可以推测出相应地也存在dispatch_retain函数。

在dispatch_async函数中追加Block到Concurrent Dispatch Queue,并立即通过dispatch_release函数进行释放是否可以呢?

没问题。在dispatch_async函数中追加Block到Dispatch Queue.换而言之,该Block通过dispatch_retain函数持有Dispatch Queue.一旦Block结束,就通过dispatch_release函数释放该Block持有的Dispatch Queue.

也就是说,在dispatch_async函数中追加Block到Dispatch Queue后,即使立即释放Dispatch Queue,该Dispatch Queue由于被Block所持有也不会被废弃,因而Block能够执行。Block执行结束后会释放Dispatch Queue,这时谁都不持有Dispatch Queue,因此它会被废弃。

以上是关于dispatch_queue_create、dispatch_retain、dispatch_release函数的使用的主要内容,如果未能解决你的问题,请参考以下文章

dispatch_queue_create、dispatch_retain、dispatch_release函数的使用

如何处理dispatch_queue_t dispatch_get_local_queue dispatch_queue_create EXC BAD ACCESS?

将 python 反汇编从 dis.dis 转换回 codeobject

一般错误:1364:字段“dis”没有默认值

最短路总结

最短路径模板总结