第01天多线程网络:(03):多线程在iOS开发中的应用
2017-04-15 00:00
567 查看
#####一、主线程
#####二、耗时操作的执行
code
不要把耗时操作放到主线程里面
什么是主线程 一个iOS程序运行后,默认会开启1条线程,称为“主线程”或“UI线程” 主线程的主要作用 显示\刷新UI界面 处理UI事件(比如点击事件、滚动事件、拖拽事件等) 主线程的使用注意 别将比较耗时的操作放到主线程中 耗时操作会卡住主线程,严重影响UI的流畅度,给用户一种“卡”的坏体验
#####二、耗时操作的执行
如果将耗时操作放在主线程 如果将耗时操作放在子线程(后台线程、非主线程)
code
不要把耗时操作放到主线程里面
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (IBAction)btnClick:(id)sender { NSLog(@" -- %@",[NSThread currentThread]); for (NSInteger i = 0; i<10000; i++) { NSLog(@"%zd ---",[NSThread currentThread]); } } - (void)viewDidLoad { [super viewDidLoad]; // 1.获得主线程 (类 : NSThread 线程) NSThread *mainThread = [NSThread mainThread]; NSLog(@" -- %@",mainThread); // <NSThread: 0x618000063ac0>{number = 1, name = main} // 2.获得当前线程 NSThread *currenThread = [NSThread currentThread]; NSLog(@" -- %@",currenThread); // <NSThread: 0x618000063ac0>{number = 1, name = main} // 3. 判断主线程 // 3.1 number = 1; // 3.2 类方法 BOOL isMainThreadA = [NSThread isMainThread]; // 3.3 对象方法 BOOL isMainThreadB = [currenThread isMainThread]; NSLog(@"-- %zd %zd",isMainThreadA,isMainThreadB); } @end
相关文章推荐
- IOS应用开发03——自定义Cell的AccessoryButton及事件源被点击的cell行
- IOS开发之---网络应用
- iOS多线程与网络开发之解析json数据
- iOS开发网络请求——大文件的多线程断点下载
- iOS多线程与网络开发之NSURLCache
- iOS网络高级编程:iPhone和iPad的企业应用开发之错误处理
- iOS多线程与网络开发之多线程概述
- iOS多线程与网络开发之解析xml
- 理解iOS多线程应用的开发以及线程的创建方法
- iOS开发网络应用的利器
- IOS 开发进阶--多线程和网络--pthread
- SQLite的多线程应用与iOS开发
- IOS 开发进阶--多线程和网络--多线程的基础知识的了解
- iOS多线程与网络开发之小文件上传
- IOS开发 网络与多线程
- SQLite的多线程应用与iOS开发
- IOS 开发进阶--多线程和网络--NSURLSession详细解
- iOS多线程应用开发中使用NSOperation类的基本方法
- [Android应用开发] 03.网络编程
- iOS多线程与网络开发之使用POST上传JSON数据 & 多值参数