NSThread翻译

Posted by CoderLeonidas on September 17, 2019

NSThread

一个执行的线程

概述

当你想让一个OC方法在它自己的执行线程中运行的时候,可以用这个类。当你想执行一个冗长任务,但不希望阻塞程序其余部分的执行的时候,线程显得特别有用。特别是你可以用线程来避免阻塞主线程(处理用户界面和事件相关动作)。线程还可以用来将一个大的工作划分为几个较小的工作,这将导致多核计算机的性能增加。

NSThread 类支持和NSOperation类似的用来监控一个线程运行时条件的语义。你可以用这些语义来取消一个线程的执行或者决定线程是否继续执行还是完成当前任务。取消一个线程需要你的线程代码支持。详情见cancel方法的描述。

子类化的注意点

你可以子类化NSThread并重载main方法来实现你的线程的主要入口点。如果你重载main方法,就不需要调用super来调用继承而来的行为。


话题

初始化一个NSThread对象

  • - init

返回一个初始化的 NSThread 对象

  • - initWithTarget:selector:object:

返回一个用给定参数初始化的 NSThread 对象

启动一个线程

  • + detachNewThreadSelector:toTarget:withObject:

派发一个新线程并使用给定的selector作为线程的入口点

  • - start

开启接收方(线程对象)

  • - main

线程的主要入口点

#停止一个线程

  • + sleepUntilDate:

阻塞当前线程知道指定的时间到了

  • + sleepForTimeInterval:

使线程在给定的时间内睡眠

  • + exit

终止当前线程

  • - cancel

更改接收者(线程)的取消状态,以指示它应该退出(exit)

确定线程的执行状态

  • executing

一个布尔值,指示接受者(线程)是否正在执行

  • finished

一个布尔值,指示接受者(线程)是否已完成执行

  • cancelled

一个布尔值,指示接受者(线程)是否已被取消

与主线程工作

  • isMainThread

一个布尔值,指示是否当前线程是主线程

  • mainThread

返回代表主线程的 NSThread 对象

查询当前线程环境

  • + isMultiThreaded

返回是否程序是多线程的

  • currentThread

返回代表当前执行线程的 NSThread 对象

  • callStackReturnAddresses

返回包含调用堆栈返回地址的数组

  • callStackSymbols

返回包含调用堆栈符号的数组

与线程属性工作

  • threadDictionary

线程对象的字典

  • NSAssertionHandlerKey

  • name

接受者(线程)的名字

  • stackSize

接受者(线程)的堆栈大小,以字节为单位

线程工作的优先级

  • qualityOfService

  • NSQualityOfService

用于指示系统工作的性质和重要性。在资源争用的情况下,高质量的服务类的工作比低质量的服务类工作接受的资源要多。

  • + threadPriority

返回当前线程的优先级

  • threadPriority

接受者(线程)的优先级

  • + setThreadPriority:

设置当前线程的优先级

通知

  • NSDidBecomeSingleThreadedNotification

已变成单线程?

  • NSThreadWillExitNotification

当线程接收到exit消息,并在线程退出之前,NSThread对象会发出这个通知。在线程退出之前,被调用以接受这个消息的观察者方法会在将要退出的线程中执行。

  • NSWillBecomeMultiThreadedNotification

当有第一个线程从当前线程中分离的时候抛出这个通知。NSThread类最多会发出一次这个通知,也就是在一个线程第一次使用detachNewThreadSelector:toTarget:withObject: 方法或者start方法被分离的时候。而随后这些方法的调用就不会发出这个通知了。这个通知的观察者在主线程中调用他们的线程处理方法, 而非在新线程中。观察者的通知处理方法总是会在新线程开始执行前执行。

初始化器

  • - initWithBlock:

类型方法

+ detachNewThreadWithBlock: