MulticastBlock
public class MulticastBlock
多句柄代理,线程安全,可实现重复、单次或延迟调用功能
串行安全:读sync,写async 并行安全:读sync,写async, 用flags:.barrier加共享互斥锁
-
句柄可扩展优先级
See moreDeclaration
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()