FWPluginManager
@interface FWPluginManager : NSObject
插件管理器类。支持插件冷替换(使用插件前)和热替换(先释放插件)
Note
和Mediator对比如下: Plugin:和业务无关,侧重于工具类、基础设施、可替换,比如Toast、Loading等 Mediator: 和业务相关,侧重于架构、业务功能、模块化,比如用户模块,订单模块等-
单例插件加载器,加载未注册插件时会尝试调用并注册,block返回值为register方法object参数
Declaration
Objective-C
@property (class, nonatomic, readonly) FWLoader<Protocol *, id> *_Nonnull sharedLoader;
-
注册单例插件,仅当插件未使用时生效,插件类或对象必须实现protocol
Declaration
Objective-C
+ (BOOL)registerPlugin:(nonnull Protocol *)pluginProtocol withObject:(nonnull id)object;
-
预置单例插件,仅当插件未注册时生效,插件类或对象必须实现protocol
Declaration
Objective-C
+ (BOOL)presetPlugin:(nonnull Protocol *)pluginProtocol withObject:(nonnull id)object;
-
取消插件注册,仅当插件未使用时生效
Declaration
Objective-C
+ (void)unregisterPlugin:(nonnull Protocol *)pluginProtocol;
-
延迟加载插件对象,调用后不可再注册该插件
Declaration
Objective-C
+ (nullable id)loadPlugin:(nonnull Protocol *)pluginProtocol;
-
释放插件对象并标记为未使用,释放后可重新注册该插件
Declaration
Objective-C
+ (void)unloadPlugin:(nonnull Protocol *)pluginProtocol;