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