美文网首页
iOS:一个无聊的GCD便捷操作类

iOS:一个无聊的GCD便捷操作类

作者: 杨柳小易 | 来源:发表于2017-03-02 15:36 被阅读23次

    一个无聊的GCD轮子

    面试有回问道,做项目的时候,有没有什么系统的库用着不爽的,然后你自己从新封装的。

    <strong><code>GCD</code>有时候就觉得API比较讨厌</strong>

    很久之前,撸了一个GCD的便捷操作类。

    @interface PTVGCDQueue : NSObject
    //< 队列
    @property (strong, readonly, nonatomic) dispatch_queue_t dispatchQueue;
    //< 主队列
    + (PTVGCDQueue *)mainQueue;
    //< 全局队列
    + (PTVGCDQueue *)globalQueue;
    + (PTVGCDQueue *)highPriorityGlobalQueue;
    + (PTVGCDQueue *)lowPriorityGlobalQueue;
    + (PTVGCDQueue *)backgroundPriorityGlobalQueue;
    
    //< 使用才创建的队列
    
    ····此处可以添加几个项目中单独使用的线程。
    
    //< 初始化
    //< 默认 DISPATCH_QUEUE_SERIAL 队列
    - (instancetype)init;
    - (instancetype)initSerial;
    - (instancetype)initSerialWithLabel:(NSString *)label;
    //< 创建DISPATCH_QUEUE_CONCURRENT 队列
    - (instancetype)initConcurrent;
    - (instancetype)initConcurrentWithLabel:(NSString *)label;
    
    //< 便捷实用
    + (void)executeInMainQueue:(dispatch_block_t)block;
    + (void)executeInGlobalQueue:(dispatch_block_t)block;
    + (void)executeInHighPriorityGlobalQueue:(dispatch_block_t)block;
    + (void)executeInLowPriorityGlobalQueue:(dispatch_block_t)block;
    + (void)executeInBackgroundPriorityGlobalQueue:(dispatch_block_t)block;
    + (void)executeInMainQueue:(dispatch_block_t)block afterDelaySecs:(NSTimeInterval)sec;
    + (void)executeInGlobalQueue:(dispatch_block_t)block afterDelaySecs:(NSTimeInterval)sec;
    + (void)executeInHighPriorityGlobalQueue:(dispatch_block_t)block afterDelaySecs:(NSTimeInterval)sec;
    + (void)executeInLowPriorityGlobalQueue:(dispatch_block_t)block afterDelaySecs:(NSTimeInterval)sec;
    + (void)executeInBackgroundPriorityGlobalQueue:(dispatch_block_t)block afterDelaySecs:(NSTimeInterval)sec;
    
    //< 把block加入队列
    - (void)execute:(dispatch_block_t)block;
    - (void)execute:(dispatch_block_t)block afterDelay:(int64_t)delta;
    - (void)execute:(dispatch_block_t)block afterDelaySecs:(float)delta;
    - (void)waitExecute:(dispatch_block_t)block;
    - (void)barrierExecute:(dispatch_block_t)block;
    - (void)waitBarrierExecute:(dispatch_block_t)block;
    - (void)suspend;
    - (void)resume;
    
    @end
    
    

    方便集中管理线程,不用记录那么长的API

    相关文章

      网友评论

          本文标题:iOS:一个无聊的GCD便捷操作类

          本文链接:https://www.haomeiwen.com/subject/kpfkgttx.html