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()
View on GitHub