NSThread是苹果提供给开发者的一个可以操作线程的对象。
既然是对象,就从属性和方法两个方面介绍。
属性有描述性的作用。
描述
- 线程优先级
@property double threadPriority;
// 由高到低
// NSQualityOfServiceUserInteractive 用于直接于UI交互的任务,比如渲染UI到屏幕上。
// NSQualityOfServiceUserInitiated 用于用户明确请求的任务,且执行结果需要立即展示,以便用户近一步操作。比如,在消息列表中加载一个可以被选中的邮件。
// NSQualityOfServiceDefault 默认优先级
// NSQualityOfServiceUtility 普通优先级
// NSQualityOfServiceBackground 后台优先级
- 线程名称
给线程起一个合理的名字,方便查看。 - 线程运行状态
是否正在进行中
是否已经结束
是否可以取消线程
是否为主线程
操作
- 开启线程
- 设置线程名称
- 取消线程
- 退出当前线程
- 设置线程优先级
NSThreadPerformAdditions分类
这个分类里的方法,能够实现线程之间通信的功能
// 直接在主线程中,执行某个方法
- (void)performSelectorMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(Bool)wait modes:(nullable NSArray<NSString *> *)array;
// 在制定的 NSThread线程中执行某个方法
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waithUntilDone:(Bool)wait modes:(nullable NSArray<NSString *> *)array;
// 在后台线程中执行某个方法
- (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg;