MulticastBlock

public class MulticastBlock

多句柄代理,线程安全,可实现重复、单次或延迟调用功能

串行安全:读sync,写async 并行安全:读sync,写async, 用flags:.barrier加共享互斥锁

  • 句柄可扩展优先级

    See more

    Declaration

    Swift

    public struct Priority : RawRepresentable, Equatable, Hashable, Sendable
  • 是否只能invoke一次,开启时invoke后再append会立即执行而不是添加,默认false

    Declaration

    Swift

    public var invokeOnce: Bool
  • 调用后是否自动移除句柄,默认false可重复执行

    Declaration

    Swift

    public var autoRemoved: Bool
  • 是否在主线程执行,会阻碍UI渲染,默认false

    Declaration

    Swift

    public var onMainThread: Bool
  • 初始化方法

    Declaration

    Swift

    public init(invokeOnce: Bool = false, autoRemoved: Bool = false, onMainThread: Bool = false)
  • 添加同步句柄,优先级默认normal,注意invokeOnce开启且调用了invoke后会立即执行而不是添加

    Declaration

    Swift

    public func append(_ block: @escaping @Sendable () -> Void, priority: Priority = .normal)
  • 添加异步句柄,block必须调用completionHandler,优先级默认normal,注意invokeOnce开启且调用了invoke后会立即执行而不是添加

    Declaration

    Swift

    public func append(_ block: @escaping @Sendable (_ completionHandler: @escaping @Sendable () -> Void) -> Void, priority: Priority = .normal)
  • 手动清空所有句柄

    Declaration

    Swift

    public func removeAll()
  • 调用句柄,invokeOnce开启时多次调用无效

    Declaration

    Swift

    public func invoke()