https://wereadteam.github.io/2016/03/19/iOS-Component/
总结: 不能直接去调用组件的方法,因为这样会产生依赖,那我就要通过其他方法去调用,也就是通过 字符串->方法 的映射去调用。runtime 接口的 className + selectorName -> IMP 是一种,注册表的 key -> block 是一种,而前一种是 OC 自带的特性,后一种需要内存维持一份注册表
CTMediator工作方式
AF50349F-295E-48F1-B886-35C85568B66F.png
当B原本存在的时候,个人认为的一种解决方式
4978528B-21B2-4EDF-9773-5CC2313DCC66.png
MGJRouter
MGJRouter的url-block实现方案思路为,在路由中心维护着一张路由表,url为key, block为value。
注册路由表时,将key和value对应保存到路由表routes中
使用时,根据URL拿到对应的block进行执行。
/**
* 保存了所有已注册的 URL
* 结构类似 @{@"beauty": @{@":id": {@"_", [block copy]}}}
*/
@property (nonatomic) NSMutableDictionary *routes;
调用的时候也可传字典参数
+ (void)openURL:(NSString *)URL withUserInfo:(NSDictionary *)userInfo completion:(void (^)(id result))completion