小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
iOS中印象任务执行速度的因素有以下几种。
CPU
的调度情况- 任务的复杂度
- 任务的优先级
- 线程状态
目前
iOS
中,线程优先级的threadPriority
属性已经弃用,被NSQualityOfService
类型的qualityOfService
所代替
typedef NS_ENUM(NSInteger, NSQualityOfService) {
NSQualityOfServiceUserInteractive = 0x21,
NSQualityOfServiceUserInitiated = 0x19,
NSQualityOfServiceUtility = 0x11,
NSQualityOfServiceBackground = 0x09,
NSQualityOfServiceDefault = -1
}
API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0));
NSQualityOfService
:服务质量。用于表示工作的性质和对系统的重要性。当存在资源争用时,使用高质量的服务类比使用低质量的服务类获得更多的资源
NSQualityOfServiceUserInteractive
:用于直接涉及提供交互式UI
的工作。例如:处理控制事件或在屏幕上绘图NSQualityOfServiceUserInitiated
:用于执行用户明确要求的工作,并且为了允许进一步的用户交互,必须立即显示这些工作的结果。例如:在用户在邮件列表中选择邮件后加载邮件NSQualityOfServiceUtility
:用于执行用户不太可能立即等待结果的工作。这项工作可能是由用户请求的,也可能是自动启动的,并且通常使用非模式进度指示器在用户可见的时间尺度上操作。例如:定期内容更新或批量文件操作,如媒体导入NSQualityOfServiceBackground
:用于非用户发起或不可见的工作。通常,用户甚至不知道正在进行这项工作。例如:预抓取内容、搜索索引、备份或与外部系统同步数据NSQualityOfServiceDefault
:表示没有明确的服务质量信息。只要可能,适当的服务质量是根据可用的资源确定的。否则,使用NSQualityOfServiceUserInteractive
和NSQualityOfServiceUtility
之间的服务质量级别