首页 > 代码库 > iOS 多线程学习笔记

iOS 多线程学习笔记

本文复制、参考自文章:iOS多线程编程之NSThread的使用  ,主要为了加强个人对知识的理解和记忆,不做他用。这里对原作者的辛勤工作表示感谢!

1. 简介

1.1 iOS的多线程编程技术分类

(1)NSThread 

  (2) Cocoa NSOperation

  (3) GCD (Grand Central Dispatch)

这三种方式从上到下,抽象层次逐渐增高,使用也越来越简单。

1.2 三种方式的优缺点

 优点  缺点
NSThread轻量需要自己管理线程的生命周期,线程同步。线程同步加锁时,会有一定的系统开销。
NSOperation  无需关心线程管理,数据同步,可以把精力放在自己需要的执行操作上 
GCDiOS4.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 多线程学习笔记