123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- //
- // YMTimer.h
- // yuemoClient
- //
- // Created by YoMi on 2023/11/6.
- //
- #import <Foundation/Foundation.h>
- NS_ASSUME_NONNULL_BEGIN
- typedef void(^YMTimerChangeBlock)(NSString *day, NSString *hour, NSString *minute, NSString *second, NSString *ms);
- typedef void(^YMTimerFinishBlock)(NSString *identifier);
- typedef void(^YMTimerPauseBlock)(NSString *identifier);
- /** 倒计时变化通知类型 */
- typedef NS_ENUM(NSInteger, YMTimerSecondChangeNFType) {
- YMTimerSecondChangeNFTypeNone = 0,
- YMTimerSecondChangeNFTypeMilliSecond,//每100ms(毫秒) 发出一次
- YMTimerSecondChangeNFTypeSecond,//每1s(秒) 发出一次
- };
- @interface YMTimer : NSObject
- /** 单例 */
- YMTimer *YMTimerM(void);
- #pragma mark - ***** 配置计时任务通知回调 *****
- /// 设置倒计时任务的通知回调
- /// @param name 通知名
- /// @param identifier 倒计时任务的标识
- /// @param type 倒计时变化通知类型
- + (void)setNotificationForName:(NSString *)name identifier:(NSString *)identifier changeNFType:(YMTimerSecondChangeNFType)type;
- #pragma mark - ***** 添加计时任务(100ms回调一次) *****
- /// 添加计时任务
- /// @param time 时间长度
- /// @param handle 每100ms回调一次
- + (void)addTimerForTime:(NSTimeInterval)time handle:(YMTimerChangeBlock)handle;
- /// 添加计时任务
- /// @param time 时间长度
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- + (void)addTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle;
- /// 添加计时任务
- /// @param time 时间长度
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- /// @param finishBlock 计时完成回调
- /// @param pauseBlock 计时暂停回调
- + (void)addTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle
- finish:(YMTimerFinishBlock)finishBlock
- pause:(YMTimerPauseBlock)pauseBlock;
- /// 添加计时任务,持久化到硬盘
- /// @param time 时间长度
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- + (void)addDiskTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle;
- /// 添加计时任务,持久化到硬盘
- /// @param time 添加计时任务,持久化到硬盘
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- /// @param finishBlock 计时完成回调
- /// @param pauseBlock 计时暂停回调
- + (void)addDiskTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle
- finish:(YMTimerFinishBlock)finishBlock
- pause:(YMTimerPauseBlock)pauseBlock;
- #pragma mark - ***** 添加计时任务(1s回调一次) *****
- /// 添加计时任务
- /// @param time 时间长度
- /// @param handle 计时任务标识
- + (void)addMinuteTimerForTime:(NSTimeInterval)time handle:(YMTimerChangeBlock)handle;
- /// 添加计时任务
- /// @param time 时间长度
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- + (void)addMinuteTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle;
- /// 添加计时任务
- /// @param time 时间长度
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- /// @param finishBlock 计时完成回调
- /// @param pauseBlock 计时暂停回调
- + (void)addMinuteTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle
- finish:(YMTimerFinishBlock)finishBlock
- pause:(YMTimerPauseBlock)pauseBlock;
- /// 添加计时任务
- /// @param time 时间长度
- /// @param identifier 计时任务标识
- /// @param handle 每100ms回调一次
- /// @param finishBlock 计时完成回调
- /// @param pauseBlock 计时暂停回调
- + (void)addDiskMinuteTimerForTime:(NSTimeInterval)time
- identifier:(NSString *)identifier
- handle:(YMTimerChangeBlock)handle
- finish:(YMTimerFinishBlock)finishBlock
- pause:(YMTimerPauseBlock)pauseBlock;
- #pragma mark - ***** 获取计时任务时间间隔 *****
- /// 通过任务标识获取 计时任务 间隔(毫秒)
- /// @param identifier 计时任务标识
- + (NSTimeInterval)getTimeIntervalForIdentifier:(NSString *)identifier;
- #pragma mark - ***** 暂停计时任务 *****
- /// 通过标识暂停计时任务
- /// @param identifier 计时任务标识
- + (BOOL)pauseTimerForIdentifier:(NSString *)identifier;
- /// 暂停所有计时任务
- + (void)pauseAllTimer;
- #pragma mark - ***** 重启计时任务 *****
- /// 通过标识重启 计时任务
- /// @param identifier 计时任务标识
- + (BOOL)restartTimerForIdentifier:(NSString *)identifier;
- /// 重启所有计时任务
- + (void)restartAllTimer;
- #pragma mark - ***** 重置计时任务(恢复初始状态) *****
- /// 通过标识重置 计时任务
- /// @param identifier 计时任务标识
- + (BOOL)resetTimerForIdentifier:(NSString *)identifier;
- /// 重置所有计时任务
- + (void)resetAllTimer;
- #pragma mark - ***** 移除计时任务 *****
- /// 通过标识移除计时任务
- /// @param identifier 计时任务标识
- + (BOOL)removeTimerForIdentifier:(NSString *)identifier;
- /// 移除所有计时任务
- + (void)removeAllTimer;
- #pragma mark - ***** 格式化时间 *****
- /// 将毫秒数 格式化成 时:分:秒:毫秒
- /// @param time 时间长度(毫秒单位)
- /// @param handle 格式化完成回调
- + (void)formatDateForTime:(NSTimeInterval)time handle:(YMTimerChangeBlock)handle;
- @end
- NS_ASSUME_NONNULL_END
|