首页 > 代码库 > iOS开发开辟线程总结--NSThread

iOS开发开辟线程总结--NSThread

1、简介:

1.1 iOS有三种多线程编程的技术,分别是:

1.、NSThread 

2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用)

3、GCD  全称:Grand Central Dispatch( iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用)

这三种编程方式从上到下抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。

这篇我们主要介绍和使用NSThread,后面会继续2、3 的讲解和使用。

1.2 三种方式的有缺点介绍:

NSThread:

优点:NSThread 比其他两个轻量级

缺点:需要自己管理线程的生命周期,线程同步。线程同步对数据的加锁会有一定的系统开销

NSThread创建的两种方式:

从以下代码可以看到 NSThread 是并发同步执行

- (void)viewDidLoad {    [super viewDidLoad];    [NSThread detachNewThreadSelector:@selector(myThread) toTarget:self withObject:nil];    NSLog(@"234");}-(void)myThread{    sleep(5);    NSLog(@"123");}2.- (void)viewDidLoad {    [super viewDidLoad];    NSThread * maThread = [[NSThread alloc] initWithTarget:self selector:@selector(myThread) object:nil];    [maThread start];    NSLog(@"234");}-(void)myThread{    sleep(5);    NSLog(@"123");}

第一种方式会直接创建线程并且开始运行线程,第二种方式是先创建线程对象,然后再运行线程操作,在运行线程操作前可以设置线程的优先级等线程信息

2.4.2线程间通讯

线程下载完图片后怎么通知主线程更新界面呢?

[self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES];

performSelectorOnMainThread是NSObject的方法,除了可以更新主线程的数据外,还可以更新其他线程的比如:

用:performSelector:onThread:withObject:waitUntilDone: 

iOS开发开辟线程总结--NSThread