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?