iOS组件化iOS接下来要研究的知识点将来跳槽用

利用runtime来给组件化项目appdelegate减负

2019-02-28  本文已影响67人  Link913

前言

本文主要依赖我写的两个工具

1.UCRuntimeKit:这个小工具主要是为了能够利用字符串+runtime动态的调用方法.经过了500多条单元测试,基本满足所有的使用场景,安全,且支持向调用方抛出error,但不会crash.在这里它主要是为了向各个组件中的delegate转发多参数方法用的.

2.UCAppDelegateReduce.这个小工具依赖上面的UCRuntimeKit来做消息转发.

实现原理

使用

可以利用cocoapod进行导入,pod 'UCAppDelegateReduce'

Objc中的使用

ObjcDemo

Swift的使用

SwiftDemo


UCAppDelegateConfigModel是很灵活的,支持位移枚举配置,配置后不会调用未配置的方法,另外manager的配置在app的生命周期中只应该在最开始load的时候配置一次!配置完成后这里会解析,生成类似这样的map,以代理方法名为key,需要转发的类名集合为value,并将这个map缓存在内存中,方便快速转发给各个组件.

这样你就可以把例如原先写在appdelegate中的开屏配置,分享key配置,支付配置,push路由配置,3Dtouch等等直接写在各自的模块中了,这里的调用顺序也是可以通过配置来决定的.

但是如果这个调用是异步的,例如组件B的一个功能依赖组件B的回调,建议还是把这个写在组件a的delegate实现里.

做完了这些你会发现你原来的delegate基本可以什么都不写了,他已经把业务分散到各个组件中去了.

UT

关于单元测试,这里基本只是测试了调用这个模块的,转发各个模块都是手动测得,判断参数能传入到各个组件就没有更深度的写了,这里的单元测试确实不太好写.

上一篇下一篇

猜你喜欢

热点阅读