多线程在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

线程生命周期:自动管理

使用频率:经常使用

results matching ""

    No results matching ""