iOS GCD学习《二》

GCD学习《一》
iOS GCD信号量的使用

Swift中队列的创建

public convenience init(label: String, qos: DispatchQoS = .unspecified, attributes: DispatchQueue.Attributes = [], autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit, target: DispatchQueue? = nil)
  • label:String : 队列的标识符,方便在调试工具(如 Instruments, 奔溃日志)中找到对应的信息。

  • qos: DispatchQoS : 该值确定系统安排任务执行的优先级。QoS类对要在DispatchQueue上执行的工作进行了分类。 通过指定任务的qos,可以表明任务对应用程序的重要性。 在安排任务时,系统会优先处理服务级别较高的任务。因为高优先级的工作比低优先级的工作执行得更快,资源更多,所以与低优先级的工作相比,通常需要更多的精力。 为您的应用执行的工作准确地指定适当的QoS类可确保您的应用具有响应能力和能源效率。

    1. public static let background: DispatchQoS 在所有任务中具有最低的优先级。针对当APP在后台运行的时候,需要处理的任务
    2. public static let utility: DispatchQoS 优先级低于default, userInitiated, userInteractive,高于background。 将类型分配给不会阻止用户继续使用您的应用程序的任务。 例如,您可以将此类分配给长时间运行的任务,而这些任务的进度用户并未积极关注。
    3. public static let default: DispatchQoS 优先级低于 userInitiated, userInteractive,但高于utility和background。将此类型分配给应用启动或代表用户执行活动的任务或队列。
    4. public static let userInitiated: DispatchQoS 优先级仅仅低于 userInteractive。 将此类型分配给可以为用户的操作提供即时结果的任务,或者将阻止用户使用您的应用的任务。 例如,您可以使用此类型加载要显示给用户的电子邮件的内容。
    5. public static let userInteractive: DispatchQoS 在所有任务中具有最高的优先级。将此类型分配给可与用户交互或主动更新应用程序的用户界面的任务或队列。 例如,将此用于动画类或跟踪事件。
    6. public static let unspecified: DispatchQoS 未设置优先级

    在OC中的定义

    typedef uint32_t dispatch_qos_t;
    typedef uint32_t dispatch_priority_t;
    
    #define DISPATCH_QOS_UNSPECIFIED        ((dispatch_qos_t)0)
    #define DISPATCH_QOS_MAINTENANCE        ((dispatch_qos_t)1)
    #define DISPATCH_QOS_BACKGROUND         ((dispatch_qos_t)2)
    #define DI
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值