GCD定时器封装

作者: 季末微夏 | 来源:发表于2018-08-03 03:29 被阅读8次

    前言

    iOS开发中,经常需要使用到定时器,使用NSTimer很容易出现内存泄漏,在此简单封装GCD定时器。

    1.定时器方法

    - (instancetype)initDispatchTimerWithTimeInterval:(double)interval
                                    delaySecs:(float)delaySecs
                                        queue:(dispatch_queue_t)queue
                                      repeats:(BOOL)repeats
                                       action:(dispatch_block_t)action;
    /*响应次数*/
    @property (nonatomic, assign, readonly) NSInteger actionTimes;
    
    /**开始定时器*/
    - (void)startTimer;
    /**执行一次定时器响应*/
    - (void)responseOnceTimer;
    /**取消定时器*/
    - (void)cancelTimer;
    /**暂停定时器*/
    - (void)suspendTimer;
    /**恢复定时器*/
    - (void)resumeTimer;
    /**替换旧的响应*/
    - (void)replaceOldAction:(dispatch_block_t)action;
    

    2.全局定时器

    + (instancetype)sharedManager;
    
    
    
    /**
     创建定时器,需要调用开始开启,如果存在定时器,不会重新创建
     @param timerName 定时器名称
     @param interval 间隔时间
     @param delaySecs 第一次延迟时间
     @param queue 线程
     @param repeats 是否重复
     @param action 响应
     */
    - (void)scheduledDispatchTimerWithName:(NSString *)timerName
                              timeInterval:(NSTimeInterval)interval
                                 delaySecs:(float)delaySecs
                                     queue:(dispatch_queue_t)queue
                                   repeats:(BOOL)repeats
                                    action:(dispatch_block_t)action;
    
    /**开始定时器*/
    - (void)startTimer:(NSString *)timerName;
    /**执行一次定时器响应*/
    - (void)responseOnceTimer:(NSString *)timerName;
    /**取消定时器*/
    - (void)cancelTimerWithName:(NSString *)timerName;
    /**暂停定时器*/
    - (void)suspendTimer:(NSString *)timerName;
    /**恢复定时器*/
    - (void)resumeTimer:(NSString *)timerName;
    /**获取定时器*/
    - (CLGCDTimer *)timer:(NSString *)timerName;
    
    

    其他

    简单的封装了一下,仅供大家参考,代码比较简单,完整项目地址------>CLGCDTimerManager

    相关文章

      网友评论

        本文标题:GCD定时器封装

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