YMTimer.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. //
  2. // YMTimer.h
  3. // yuemoClient
  4. //
  5. // Created by YoMi on 2023/11/6.
  6. //
  7. #import <Foundation/Foundation.h>
  8. NS_ASSUME_NONNULL_BEGIN
  9. typedef void(^YMTimerChangeBlock)(NSString *day, NSString *hour, NSString *minute, NSString *second, NSString *ms);
  10. typedef void(^YMTimerFinishBlock)(NSString *identifier);
  11. typedef void(^YMTimerPauseBlock)(NSString *identifier);
  12. /** 倒计时变化通知类型 */
  13. typedef NS_ENUM(NSInteger, YMTimerSecondChangeNFType) {
  14. YMTimerSecondChangeNFTypeNone = 0,
  15. YMTimerSecondChangeNFTypeMilliSecond,//每100ms(毫秒) 发出一次
  16. YMTimerSecondChangeNFTypeSecond,//每1s(秒) 发出一次
  17. };
  18. @interface YMTimer : NSObject
  19. /** 单例 */
  20. YMTimer *YMTimerM(void);
  21. #pragma mark - ***** 配置计时任务通知回调 *****
  22. /// 设置倒计时任务的通知回调
  23. /// @param name 通知名
  24. /// @param identifier 倒计时任务的标识
  25. /// @param type 倒计时变化通知类型
  26. + (void)setNotificationForName:(NSString *)name identifier:(NSString *)identifier changeNFType:(YMTimerSecondChangeNFType)type;
  27. #pragma mark - ***** 添加计时任务(100ms回调一次) *****
  28. /// 添加计时任务
  29. /// @param time 时间长度
  30. /// @param handle 每100ms回调一次
  31. + (void)addTimerForTime:(NSTimeInterval)time handle:(YMTimerChangeBlock)handle;
  32. /// 添加计时任务
  33. /// @param time 时间长度
  34. /// @param identifier 计时任务标识
  35. /// @param handle 每100ms回调一次
  36. + (void)addTimerForTime:(NSTimeInterval)time
  37. identifier:(NSString *)identifier
  38. handle:(YMTimerChangeBlock)handle;
  39. /// 添加计时任务
  40. /// @param time 时间长度
  41. /// @param identifier 计时任务标识
  42. /// @param handle 每100ms回调一次
  43. /// @param finishBlock 计时完成回调
  44. /// @param pauseBlock 计时暂停回调
  45. + (void)addTimerForTime:(NSTimeInterval)time
  46. identifier:(NSString *)identifier
  47. handle:(YMTimerChangeBlock)handle
  48. finish:(YMTimerFinishBlock)finishBlock
  49. pause:(YMTimerPauseBlock)pauseBlock;
  50. /// 添加计时任务,持久化到硬盘
  51. /// @param time 时间长度
  52. /// @param identifier 计时任务标识
  53. /// @param handle 每100ms回调一次
  54. + (void)addDiskTimerForTime:(NSTimeInterval)time
  55. identifier:(NSString *)identifier
  56. handle:(YMTimerChangeBlock)handle;
  57. /// 添加计时任务,持久化到硬盘
  58. /// @param time 添加计时任务,持久化到硬盘
  59. /// @param identifier 计时任务标识
  60. /// @param handle 每100ms回调一次
  61. /// @param finishBlock 计时完成回调
  62. /// @param pauseBlock 计时暂停回调
  63. + (void)addDiskTimerForTime:(NSTimeInterval)time
  64. identifier:(NSString *)identifier
  65. handle:(YMTimerChangeBlock)handle
  66. finish:(YMTimerFinishBlock)finishBlock
  67. pause:(YMTimerPauseBlock)pauseBlock;
  68. #pragma mark - ***** 添加计时任务(1s回调一次) *****
  69. /// 添加计时任务
  70. /// @param time 时间长度
  71. /// @param handle 计时任务标识
  72. + (void)addMinuteTimerForTime:(NSTimeInterval)time handle:(YMTimerChangeBlock)handle;
  73. /// 添加计时任务
  74. /// @param time 时间长度
  75. /// @param identifier 计时任务标识
  76. /// @param handle 每100ms回调一次
  77. + (void)addMinuteTimerForTime:(NSTimeInterval)time
  78. identifier:(NSString *)identifier
  79. handle:(YMTimerChangeBlock)handle;
  80. /// 添加计时任务
  81. /// @param time 时间长度
  82. /// @param identifier 计时任务标识
  83. /// @param handle 每100ms回调一次
  84. /// @param finishBlock 计时完成回调
  85. /// @param pauseBlock 计时暂停回调
  86. + (void)addMinuteTimerForTime:(NSTimeInterval)time
  87. identifier:(NSString *)identifier
  88. handle:(YMTimerChangeBlock)handle
  89. finish:(YMTimerFinishBlock)finishBlock
  90. pause:(YMTimerPauseBlock)pauseBlock;
  91. /// 添加计时任务
  92. /// @param time 时间长度
  93. /// @param identifier 计时任务标识
  94. /// @param handle 每100ms回调一次
  95. /// @param finishBlock 计时完成回调
  96. /// @param pauseBlock 计时暂停回调
  97. + (void)addDiskMinuteTimerForTime:(NSTimeInterval)time
  98. identifier:(NSString *)identifier
  99. handle:(YMTimerChangeBlock)handle
  100. finish:(YMTimerFinishBlock)finishBlock
  101. pause:(YMTimerPauseBlock)pauseBlock;
  102. #pragma mark - ***** 获取计时任务时间间隔 *****
  103. /// 通过任务标识获取 计时任务 间隔(毫秒)
  104. /// @param identifier 计时任务标识
  105. + (NSTimeInterval)getTimeIntervalForIdentifier:(NSString *)identifier;
  106. #pragma mark - ***** 暂停计时任务 *****
  107. /// 通过标识暂停计时任务
  108. /// @param identifier 计时任务标识
  109. + (BOOL)pauseTimerForIdentifier:(NSString *)identifier;
  110. /// 暂停所有计时任务
  111. + (void)pauseAllTimer;
  112. #pragma mark - ***** 重启计时任务 *****
  113. /// 通过标识重启 计时任务
  114. /// @param identifier 计时任务标识
  115. + (BOOL)restartTimerForIdentifier:(NSString *)identifier;
  116. /// 重启所有计时任务
  117. + (void)restartAllTimer;
  118. #pragma mark - ***** 重置计时任务(恢复初始状态) *****
  119. /// 通过标识重置 计时任务
  120. /// @param identifier 计时任务标识
  121. + (BOOL)resetTimerForIdentifier:(NSString *)identifier;
  122. /// 重置所有计时任务
  123. + (void)resetAllTimer;
  124. #pragma mark - ***** 移除计时任务 *****
  125. /// 通过标识移除计时任务
  126. /// @param identifier 计时任务标识
  127. + (BOOL)removeTimerForIdentifier:(NSString *)identifier;
  128. /// 移除所有计时任务
  129. + (void)removeAllTimer;
  130. #pragma mark - ***** 格式化时间 *****
  131. /// 将毫秒数 格式化成 时:分:秒:毫秒
  132. /// @param time 时间长度(毫秒单位)
  133. /// @param handle 格式化完成回调
  134. + (void)formatDateForTime:(NSTimeInterval)time handle:(YMTimerChangeBlock)handle;
  135. @end
  136. NS_ASSUME_NONNULL_END