本文复制、参考自文章: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
第一种方式会直接创建线程并且开始运行线程,第二种方法是先创建线程对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息。
时间: 2024-10-11 18:06:52