多线程在iOS开发中的应用
主线程
一个iOS程序运行后,就会默认开启一条线程,成为“主线程”或“UI线程”
主线程的作用:
- 主线程的主要作用
- 显示\刷新UI界面
- 处理UI事件(比如点击、滚动、拖拽等事件)
主线程使用注意:
- 勿将耗时的操作放在主线程中进行
- 耗时操作会卡住主线程,严重影响UI的流畅度,应用感觉起来非常卡
- 要将耗时的操作放到子线程(后台线程,非主线程)中执行
//获得主线程
NSThread *mainThread = [NSThread mainThread];
NSLog(@"%@",mainThread);
//获得当前线程
NSThread *currentThread = [NSThread currentThread];
NSLog(@"%@",currentThread);
//判断主线程
BOOL isMainThreadA = [NSThread isMainThread];
NSLog(@"是否主线程:%zd",isMainThreadA);
BOOL isMainThreadB = [currentThread isMainThread];
NSLog(@"是否主线程:%zd",isMainThreadB);
iOS中多线程实现方案
pthread
- 一套通用的多线程API
- 适用于Unix\Linux\Windows等系统
- 跨平台\可移植
- 使用难度大
语言:C
线程生命周期:程序员管理
使用频率:几乎不用
NSThread
- 使用更加面向对象
- 简单易用,可直接操作线程对象
语言:OC
线程生命周期:程序员管理
使用频率:偶尔使用
GCD
- 旨在代替NSThread等线程技术
- 充分利用设备的多核
语言:C
线程生命周期:自动管理
使用频率:经常使用
NSOperation
- 基于GCD(底层是GCD)
- 比GCD多了一些更简单使用的功能
- 使用更加面向对象
语言:OC
线程生命周期:自动管理
使用频率:经常使用