首页 > 代码库 > iOS 多线程学习笔记
iOS 多线程学习笔记
本文复制、参考自文章:iOS多线程编程之NSThread的使用 ,主要为了加强个人对知识的理解和记忆,不做他用。这里对原作者的辛勤工作表示感谢!
1. 简介
1.1 iOS的多线程编程技术分类
(1)NSThread
(2) Cocoa NSOperation
(3) GCD (Grand Central Dispatch)
这三种方式从上到下,抽象层次逐渐增高,使用也越来越简单。
1.2 三种方式的优缺点
优点 | 缺点 | |
NSThread | 轻量 | 需要自己管理线程的生命周期,线程同步。线程同步加锁时,会有一定的系统开销。 |
NSOperation | 无需关心线程管理,数据同步,可以把精力放在自己需要的执行操作上 | |
GCD | iOS4.0后出现,以替代NSThread,NSOperation等技术的,很高效、强大 |
2. NSThread的使用
2.1 创建方式
(1) 实例方法创建
- (id) initWithTarget:(id)target selector:(SEL)selector object:(id) argument
示例:NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil];[myThread start];
(2) NSThread 类方法创建
+ (void)detachNewThreadSelector:(SEL) aSelector toTarget:(id)aTarget withObject:(id)anArgument示例:[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];
(3)NSObject 非显示方法创建
+ (void) performSelectorInBackground:(SEL)aSelector withObject:(id)anArgument示例[Obj performSelectorInBackground:@selector(doSomething:)withObject:nil];
selector: 线程执行的方法,这个selector只能有一个参数,而且不能有返回值;
target: selector消息发送的对象
argument:传输给selector的唯一参数,也可以是nil
第一种方式会直接创建线程并且开始运行线程,第二种方法是先创建线程对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息。
iOS 多线程学习笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。