QNTransactionManager.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // QNTransactionManager.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/4/1.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. @interface QNTransaction : NSObject
  11. /// 事务名称
  12. @property(nonatomic, copy, readonly)NSString *name;
  13. // 事务延迟执行时间 单位:秒
  14. @property(nonatomic, assign, readonly)NSInteger after;
  15. /// 事务内容
  16. @property(nonatomic, copy, readonly)void(^action)(void);
  17. /// MARK: -- 构造方法
  18. /// 普通事务,事务体仅仅执行一次
  19. /// @param name 事务名称
  20. /// @param after 事务延后时间 单位:秒
  21. /// @param action 事务体
  22. + (instancetype)transaction:(NSString *)name
  23. after:(NSInteger)after
  24. action:(void(^)(void))action;
  25. /// 定时事务
  26. /// @param name 事务名称
  27. /// @param after 事务延后时间 单位:秒
  28. /// @param interval 事务执行间隔 单位:秒
  29. /// @param action 事务体
  30. + (instancetype)timeTransaction:(NSString *)name
  31. after:(NSInteger)after
  32. interval:(NSInteger)interval
  33. action:(void(^)(void))action;
  34. @end
  35. #define kQNTransactionManager [QNTransactionManager shared]
  36. @interface QNTransactionManager : NSObject
  37. /// 单例构造方法
  38. + (instancetype)shared;
  39. /// 根据name查找事务
  40. - (NSArray <QNTransaction *> *)transactionsForName:(NSString *)name;
  41. /// 是否存在某个名称的事务
  42. - (BOOL)existtransactionsForName:(NSString *)name;
  43. /// 添加一个事务
  44. - (void)addTransaction:(QNTransaction *)transaction;
  45. /// 移除一个事务
  46. - (void)removeTransaction:(QNTransaction *)transaction;
  47. /// 在下一次循环执行事务, 该事务如果未被添加到事务列表,会自动添加
  48. - (void)performTransaction:(QNTransaction *)transaction;
  49. /// 销毁资源 清空事务链表 销毁常驻线程
  50. - (void)destroyResource;
  51. @end
  52. NS_ASSUME_NONNULL_END