上代码~
dispatch_suspend/dispatch_resume
当追加操作到Dispatch Queue时,过程中,有时候会有不希望执行的需求。或者之前的block的结果对后面的造成影响,希望后面的操作不执行等,这时候可以利用dispatch_suspend函数挂起指定的Dispatch Queue。但是这个挂起并不能保证可以立即停止队列上正在运行的block,未执行的block会被“挂起”
GCDContext
GCD允许我们为队列定义自己的上下文,因为是C语言接口,所以参数是void*,如果是oc对象,要用__bridge等关键字转为Core Foundation对象。因为是CF对象,所以要自己管理内存,一般context的关键就是内存的管理,否则会有内存泄露。
设置的一个自定义对象,设置number属性,添加到上下文。可以看到在block里获取了上下文,正确打印属性。也成功打印了自定义对象GCDContextData的dealloc方法,没有内存问题。
网友评论