iOS中的GCD(2)---获取队列方法
2015-11-08 20:16
561 查看
有2种方法获取队列:
①dispatch_queue_create
②Main Dispatch Queue/Global Dispatch Queue
PS:一个问题
渲染UI的操作必须放在主线程中
②Global Dispatch Queue:所有应用程序都能够使用的concurrent dispatch queue
它有4个优先级:
high、default、low、background
①dispatch_queue_create
②Main Dispatch Queue/Global Dispatch Queue
1.dispatch_queue_create
//参数1:队列名字 //参数2:队列优先级 dispatch_queue_t mySerialDispatchQueue = dispatch_queue_create("myQueue", NULL); /* * 尽管有ARC这一通过编译器自动管理内存的优秀记述,但生成的Dispatch Queue必须由程序员释放。 * 因为Dispatch Queue并没有像block那样具有作为Objective-C对象来处理的技术 */ dispatch_async(myQueue, ^{NSLog(@"block on myQueue");}); //这也像OC中的引用计数式内存管理一样,需要通过retain和release函数的引用计数来管理内存 dispatch_release(myQueue); dispatch_retain;
PS:一个问题
/* 一个问题: dispatch_async函数中追加block到concurrent dispatch queue,并立即通过dispatch_release进行释放是否可以?即如下方式写代码可以吗? */ dispatch_async(myQueue, ^{NSLog(@"block on myQueue");}); dispatch_release(myQueue); /* 回答: 完全没问题。即便立即释放队列,该队列由于被block持有不会立即释放,block因而可以继续执行。block执行结束后会释放队列,这时谁都不持有队列,队列会被废弃。 */
2.Main Dispatch Queue/Global Dispatch Queue
①Main Dispatch Queue:即主线程队列渲染UI的操作必须放在主线程中
②Global Dispatch Queue:所有应用程序都能够使用的concurrent dispatch queue
它有4个优先级:
high、default、low、background
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音