PluginManager
public class PluginManager : @unchecked Sendable
插件管理器类。支持插件冷替换(使用插件前)和热替换(先释放插件)
和Mediator对比如下: Plugin:和业务无关,侧重于工具类、基础设施、可替换,比如Toast、Loading等 Mediator: 和业务相关,侧重于架构、业务功能、模块化,比如用户模块,订单模块等
-
单例插件加载器,加载未注册插件时会尝试调用并注册,block返回值为register方法object参数
Declaration
Swift
public static let sharedLoader: Loader<Any, Any>
-
注册单例插件,仅当插件未使用时生效,插件类或对象必须实现protocol
Declaration
Swift
@discardableResult public static func registerPlugin<T>(_ type: T.Type, object: Any) -> Bool
-
预置单例插件,仅当插件未注册时生效,插件类或对象必须实现protocol
Declaration
Swift
@discardableResult public static func presetPlugin<T>(_ type: T.Type, object: Any) -> Bool
-
取消插件注册,仅当插件未使用时生效
Declaration
Swift
public static func unregisterPlugin<T>(_ type: T.Type)
-
延迟加载插件对象,调用后不可再注册该插件。未注册时自动查找当前模块类:DemoPluginProtocol => DemoPlugin
Declaration
Swift
public static func loadPlugin<T>(_ type: T.Type) -> T?
-
释放插件对象并标记为未使用,释放后可重新注册该插件
Declaration
Swift
public static func unloadPlugin<T>(_ type: T.Type)
-
插件调试描述
Declaration
Swift
public class func debugDescription() -> String