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

Posted Vijay的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发中关于多线程的问题(NSOperationQueue,NSThread,GCD)

iOS并发编程对比总结,NSThread,NSOperation,GCD - iOS

iOS之多线程

iOS多线程与网络开发之多线程NSThread

iOS开发Swift篇(02) NSThread线程相关简单说明

iOS学习——多线程开发(NSThread)