组件化






1.调用方式
本地组件A在某处调用 [[CTMediator sharedInstance] performTarget:targetName action:actionName params:@{...}] CTMediator 发起跨组件调用, CTMediator 根据获得的target和action信息,通过objective-C的runtime转化生成target实例以及对应的action选择子,然后最终调用到目标业务提供的逻辑,完成需求。


在远程应用调用中,远程应用通过openURL的方式,由iOS系统根据info.plist里的scheme配置找到可以响应URL的应用(在当前我们讨论的上下文中,这就是你自己的应用),应用通过 AppDelegate 接收到URL之后,调用 CTMediator openUrl: 方法将接收到的URL信息传入。当然, CTMediator 也可以用 openUrl:options: 的方式顺便把随之而来的option也接收,这取决于你本地业务执行逻辑时的充要条件是否包含option数据。传入URL之后, CTMediator 通过解析URL,将请求路由到对应的target和action,随后的过程就变成了上面说过的本地应用调用的过程了,最终完成响应。


2.组件化方案中的去model设计
(1) 调用方如何知道接收方需要哪些key的参数?
(2)调用方如何知道有哪些target可以被调用?
答:解决方案就是使用category
    mediator这个repo维护了若干个针对mediator的category,每一个对应一个target,每个category里的方法对应了这个target下所有可能的调用场景,这样调用者在包含mediator的时候,自动获得了所有可用的target-action,无论是调用还是参数传递,都非常方便。

3.基于安全考虑
1.区分调用是来自于远程App还是本地组件,可以 action添加 native 前缀去做的,凡是带有native前缀的就都只允许本地组件调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值