JKPacket参考了android的JetPack的部分思想,使响应式编程在框架层面能够感知到组件生命周期的变化。如果处于活跃状态该组件下触发的变化通知就会立即被触发;如果处于非活跃状态,该组件下触发的变化通知会处于pending状态,并保留最新的数据,等到组件状态重新变为活跃时,使用pending的最新数据重新触发一次变化通知。备注:这里的组件可以是UI组件,也可以是提供事务处理能力的非UI组件或者服务
JKPacket融合了RXSwift,因此在监听数据变化的时候,通过在onSubject这个回调内,可以充分基于RXSwift进行特殊处理,比如:指定监听的线程是否在主线程,debouce,throttle等大部分的RXSwift操作都能在这里进行设置。开发者也不用关心RXSwift的dispose相关操作,框架层面已经帮大家处理好了。让开发者能够根据业务需求对需要监听的数据进行各种的装饰操作,也降低了RXSwift的使用门槛。
lifecycleAge.observe(owner: self, onSubject: { subject in
//此处可以使用RXswift相关的知识对监听的数据进行装饰性操作
return subject.debounce(RxTimeInterval.seconds(1), scheduler: MainScheduler.instance)
}) { value in
print("JKObserveLifeCycleDataViewController value:\(String(describing: value))")
}
JKPacket中KReplayObserver,JKReplayLiveData配合起来实现了在组件处于不活跃状态时把接收到的变化数据都暂存起来,等到组件的状态变成活跃状态时,按照顺序将暂存的变化数据依次发送出来。满足了某些业务场景下组件恢复到活跃状态时,需要回放非活跃状态接收的数据。
JKPacket本质是一个能感知组件生命周期的响应式编程框架,对于复杂的业务能很好的降低状态维护的成本,提高开发效率,减少bug的产生。JKPacket融合了RXSwift,对于有一定rxswift使用基础的开发者来说会有很大帮助;对于rxswift了解不多但是愿意尝试rxswift的开发者来说也是很好的选择。当然了如果你不愿意使用rxswift,这个框架仍然能满足基本的响应式编程需求,只不过一些通过rxswift才能使用的一些便利场景,需要自己来实现。对于习惯使用OC中KVO的开发者来说,在swift中非OC类无法使用KVO进行属性监听,JKPacket作为替代方案也是一个不错的选择。
JKPacket参考了安卓Jetpack中LiveData,LifeCycle的思想,除了内部实现有差异,在变量、函数的命名上没有太大的变化。安卓开发者如果有一定Jetpack基础,能够很好的上手JKPacket,助力开发者早日成为大前端工程师。
1,了解基本的swift语法,如果还没有从OC转swift的开发者建议尽早转swift了。
2,只需要下载源码并运行源码中demo,并阅读下具体使用的demo代码即可简单使用。
1,需要储备一定的rxswift相关知识,如果能熟练使用rxswift,并对rxswift有深入了解,那使用JKPacket将会得心应手。
2,需要对KVO内部实现有一定的了解
3,通过demo了解简单的使用后可以看看JKPacket实战相关的内容,以及了解一下JKPacket的实现原理,那么将会事半功倍。如果JKPakcet已封装的类满足不了的需求场景,也可以基于JKPacket的协议,自己编写相关的子类进行拓展。
本书中出现的代码片段以及demo下载地址如下:
https://github.com/xindizhiyin2014/JKPacket.git
cocoapod集成命令:
pod 'JKPacket'
各位在使用JKPacket的过程中遇到问题或者阅读本书发现有错误之处可以通过下方邮箱联系到我。
邮箱:zhangsande18@163.com