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: 

原文地址:https://www.cnblogs.com/WJJ-Dream/p/5809235.html