多线程之NSThread和NSObject

 1 #pragma mark - NSThread实现多线程
 2     /*
 3     // 获取当前线程
 4     NSLog(@"currentThread = %@", [NSThread currentThread]);
 5
 6
 7     // 获取主线程
 8     NSLog(@"mainThread = %@", [NSThread mainThread]);
 9
10
11     // 判断当前线程是否为主线程
12     NSLog(@"isMainThread = %d", [NSThread isMainThread]);
13     */
 1 #pragma mark - NSThread手动开辟子线程
 2     /*
 3     // 参数1:target
 4     // 参数2:方法
 5     // 参数3:传参
 6     NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(sayHi) object:nil];
 7
 8     // 让线程开启
 9     [thread start];
10
11     // 使用NSThread和NSObject实现的开辟线程,系统会自动释放,不用自己关闭线程,写不写都行
12     // 结束线程的两种方式:
13     // 方式一:取消线程
14     [thread cancel];    // 不是真正的说取消就取消,而是给线程发送一个信号,通过这个信号进行取消的
15
16     // 方式二:直接将线程退出
17     [NSThread exit];
18     */
1 #pragma mark - NSThread自动开辟子线程
2     /*
3     // 线程自动开启
4     // 把手动开辟的target和selector两个参数顺序反着来
5     [NSThread detachNewThreadSelector:@selector(sayHi) toTarget:self withObject:nil];
6     */
 1 #pragma mark - NSObject开启子线程
 2
 3     // 使用performSelectorInBackground开辟子线程
 4     // 第一个参数:selector
 5     // 第二个参数:方法传递的参数
 6     [self performSelectorInBackground:@selector(sayHi) withObject:@"test"];
 7
 8     self.view.backgroundColor = [UIColor yellowColor];
 9 }
10
11
12 - (void)sayHi {
13
14     // 回到主线程修改背景颜色
15     // 参数1:selector
16     // 参数2:传参
17     // 参数3:是否等到子线程的任务完成之后进入主线程
18     [self performSelectorOnMainThread:@selector(mainThreadChangeColor) withObject:nil waitUntilDone:YES];
19 }
20
21
22 - (void)mainThreadChangeColor {
23
24     self.view.backgroundColor = [UIColor lightGrayColor];
25
26     NSLog(@"%@", [NSThread currentThread]);
27     NSLog(@"%@", [NSThread mainThread]);
28 }
时间: 2024-10-13 02:22:29

多线程之NSThread和NSObject的相关文章

iOS 多线程之NSThread简单使用

1.线程的构建和开启: (1)_thread1 = [[NSThread alloc]initWithTarget:self selector:@selector(threadOneMethod) object:nil]; _thread2 = [[NSThread alloc]initWithTarget:self selector:@selector(threadTwoMethod) object:nil]; [_thread1 start]; [_thread2 start]; 先构建,然

iOS多线程之NSThread、NSOperationQueue、NSObject和GCD的区别

区别: Thread: 是这几种方式里面相对轻量级的,但也是使用起来最负责的,你需要自己管理thread的生命周期,线程之间的同步.线程共享同一应用程序的部分内存空间, 它们拥有对数据相同的访问权限.你得协调多个线程对同一数据的访问,一般做法是在访问之前加锁,这会导致一定的性能开销.在 iOS 中我们可以使用多种形式的 thread. Cocoa threads(NSObject): 使用 NSThread 或直接从 NSObject 的类方法 performSelectorInBackgrou

ios多线程之NSThread头文件详解

1.NSThread 头文件中的相关方法 //获取当前线程 +(NSThread *)currentThread; //创建线程后自动启动线程 + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument; //是否是多线程 + (BOOL)isMultiThreaded; //线程字典 - (NSMutableDictionary *)threadDictionary; //线

iOS-----多线程之NSThread

多线程 iOS平台提供了非常优秀的多线程支持,程序可以通过非常简单的方式来启动多线程,iOS平台不仅提供了NSThread类来创建多线程,还提供了GCD方式来简化多线程编程,提供了NSOperation和NSOperationQueue支持多线程编程.总之,iOS已经尽力降低开发多线程应用的繁琐,努力让开发者能轻松.简单地开发多线程应用. 线程概述 几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程.当一个程序运行时,内部可能包含了多个顺序执行流,每

iOS多线程之NSThread

NSThread是轻量级的多线程开发,使用它需要我们自己管理线程的生命周期. 有两种方法创建启动线程. 方法1:对象方法 -(instancetype)initWithTarget:(id)target selector:(SEL)selector object:(id)argument; 方法2:类方法   +(void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument; 废话不多

iOS多线程之NSThread使用

iOS中的多线程技术 我们在iOS开发项目过程中,为了解决UI界面操作不被耗时操作阻塞,我们会使用到多线程技术.在iOS开发中,我们主要会用到三种多线程操作技术:NSThread,NSOperation,GCD. 1.Thread :是三种方法里面相对轻量级的,但需要管理线程的生命周期.同步.加锁问题,这会导致一定的性能开销2.Cocoa Operations:是基于OC实现的,NSOperation以面向对象的方式封装了需要执行的操作,不必关心线程管理.同步等问题.NSOperation是一个

iOS-多线程之NSThread详解

前言 线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B.为了同时执行两个任务,产生了多线程. 我打开一个视频软件,我开辟一个线程A让它执行下载任务,我开辟一个线程B,用来播放视频.我开辟两个线程后,这两个任务能同时执行,如果我开辟一  个线程,只有下载任务完成,才能去执行播放任务. 线程相当于店里的服务员,一个服务员同时只能做一件事情,多顾几个服务员,就能同时做很多事情. 进程 1.进程是应用程序的执行实例,简单来说就是在操作系统中运行的程序.例如我在手机上只打开QQ和微信这两个软件,

多线程之NSThread、NSOperation及GCD

目录 1.NSThread 2.NSOperation 3.GCD 4.总结 这篇主要总结下iOS开发中多线程的使用,多线程开发一般使用NSThread.NSOperation及GCD三种方式,常用GCD及NSOperation. 回到顶部 1.NSThread 创建线程主要有以下三种方式 需要注意的是对于多个线程可能同时访问一个对象的时候,使用“@synchronized”来解决这类线程同步问题. 在子线程中通知主线程通常使用以下两种办法: 回到顶部 2.NSOperation NSOpera

iOS开发笔记5:多线程之NSThread、NSOperation及GCD

这篇主要总结下iOS开发中多线程的使用,多线程开发一般使用NSThread.NSOperation及GCD三种方式,常用GCD及NSOperation. 1.NSThread 创建线程主要有以下三种方式 需要注意的是对于多个线程可能同时访问一个对象的时候,使用“@synchronized”来解决这类线程同步问题. 在子线程中通知主线程通常使用以下两种办法: 2.NSOperation NSOperation有三种使用方式,分别是NSInvocationOperation.NSBlockOpera