QNTransactionManager.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. /// @param name 事务名称
  41. - (NSArray <QNTransaction *> *)transactionsForName:(NSString *)name;
  42. /// 是否存在某个名称的事务
  43. /// @param name 事务名称
  44. - (BOOL)existTransactionsForName:(NSString *)name;
  45. /// 添加一个事务
  46. /// @param transaction 事务
  47. - (void)addTransaction:(QNTransaction *)transaction;
  48. /// 移除一个事务
  49. /// @param transaction 事务
  50. - (void)removeTransaction:(QNTransaction *)transaction;
  51. /// 在下一次循环执行事务, 该事务如果未被添加到事务列表,会自动添加
  52. /// @param transaction 事务
  53. - (void)performTransaction:(QNTransaction *)transaction;
  54. /// 销毁资源 清空事务链表 销毁常驻线程
  55. - (void)destroyResource;
  56. @end
  57. NS_ASSUME_NONNULL_END