iOS 对于多线程简单的认识
2016-03-15 10:01
399 查看
此片文章参考荣芳志的博客
iOS 多线程目前我接触的总共分为3种
1.NSThread
缺点:需要自己管理线程生命周期,线程同步(目前基本不用)
2.NSOperation
优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
3.GCD
优点:比NSOperationQuene更底层更高效
1.NSThread的的使用
两种创建方式
//实例方法
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
//类方法
参数的意义
selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。
target :selector消息发送的对象
argument:传输给target的唯一参数,也可以是nil
不显式创建线程的方法:
用NSObject的类方法 performSelectorInBackground:withObject: 创建一个线程
2.NSOperation的使用
使用 NSOperation的方式有两种,
一种是用定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。
另一种是继承NSOperation
3.GCD的使用
GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行。
dispatch queue分为下面三种:
Serial
又称为private dispatch queues,同时只执行一个任务。Serial queue通常用于同步访问特定的资源或数据。当你创建多个Serial queue时,虽然它们各自是同步执行的,但Serial queue与Serial queue之间是并发执行的。
Concurrent
又称为global dispatch queue,可以并发地执行多个任务,但是执行完成的顺序是随机的。
Main dispatch queue
它是全局可用的serial queue,它是在应用程序主线程上执行任务的。
1、常用的方法dispatch_async
为了避免界面在处理耗时的操作时卡死,比如读取网络数据,IO,数据库读写等,我们会在另外一个线程中处理这些操作,然后通知主线程更新界面。
用GCD实现这个流程的操作比前面介绍的NSThread NSOperation的方法都要简单。代码框架结构如下:
iOS 多线程目前我接触的总共分为3种
1.NSThread
缺点:需要自己管理线程生命周期,线程同步(目前基本不用)
2.NSOperation
优点:不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
3.GCD
优点:比NSOperationQuene更底层更高效
1.NSThread的的使用
两种创建方式
//实例方法
- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
//类方法
参数的意义
selector :线程执行的方法,这个selector只能有一个参数,而且不能有返回值。
target :selector消息发送的对象
argument:传输给target的唯一参数,也可以是nil
不显式创建线程的方法:
用NSObject的类方法 performSelectorInBackground:withObject: 创建一个线程
2.NSOperation的使用
使用 NSOperation的方式有两种,
一种是用定义好的两个子类:NSInvocationOperation 和 NSBlockOperation。
另一种是继承NSOperation
3.GCD的使用
GCD中的FIFO队列称为dispatch queue,它可以保证先进来的任务先得到执行。
dispatch queue分为下面三种:
Serial
又称为private dispatch queues,同时只执行一个任务。Serial queue通常用于同步访问特定的资源或数据。当你创建多个Serial queue时,虽然它们各自是同步执行的,但Serial queue与Serial queue之间是并发执行的。
Concurrent
又称为global dispatch queue,可以并发地执行多个任务,但是执行完成的顺序是随机的。
Main dispatch queue
它是全局可用的serial queue,它是在应用程序主线程上执行任务的。
1、常用的方法dispatch_async
为了避免界面在处理耗时的操作时卡死,比如读取网络数据,IO,数据库读写等,我们会在另外一个线程中处理这些操作,然后通知主线程更新界面。
用GCD实现这个流程的操作比前面介绍的NSThread NSOperation的方法都要简单。代码框架结构如下:
相关文章推荐
- IOS设置Tab Bar item的颜色
- IOS 逆向工程之砸壳
- IOS开发中NSRunloop跟NSTimer的问题
- IOS设备之armv6,armv7,armv7s,arm64
- iOS 最新版 CocoaPods 的安装流程
- HTML5+CSS3实现iOS Path菜单特效,动画效果很酷
- iOS CLLocationManager 定位
- IOS开发:CoreGraphics简单绘图
- iOS JSON 模型转换库评测
- iOS中的事件传递和响应者链条
- iOS指针学习笔记
- [运维工具]systat iostat
- IOS开发者必看的博客汇总
- IOS开发者必看的博客
- iOS 多线程 GCD(滚床单) 的高级用法
- ARC下NSException有可能会引起内存泄露
- OAuth初识 && OAuth授权流程
- iOS 开发小结之layoutSubviews调用
- iOS自定义转场动画实战讲解
- iOS实现“摇一摇”与“扫一扫”功能