首页 技术 正文
技术 2022年11月19日
0 收藏 546 点赞 5,099 浏览 3632 个字

【前言】

  • 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能。
  • 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之前在简书上有写过相关文章,但是发现阅读量比较低,所以今天决定整理一下 WisdomRouterKit 功能介绍和使用方案,重新更新下文章。
  • 当然本期 WisdomRouterKit SDK 又添加了新的强大功能。

【提问】

1:首先 WisdomRouterKit SDK 是一个什么样的框架?

答:WisdomRouterKit 是一个 UIViewController 与 UIViewController之间数据传递的框架。

  • 一般两个UIViewController之间的数据传递,我们都需要创建对应类型的 UIViewController 对象,然后对其可读可写的属性进行调用赋值,

来完成他们之间的数据传递, 这就是 WisdomRouterKit 的主要功能。

  • WisdomRouterKit 的功能特色,无需我们手动去创建对于类型的 UIViewController,就能在 UIViewController 跳转之前完成数据传递,

其中支持传递的数据类型包括:基本数据 和 Model 模型对象,还有 闭包 和 UI控件对象。

【案例】:

iOS 组件化路由框架 WisdomRouterKit 的应用

2:  什么样的 iOS 项目需要用到 WisdomRouterKit 框架?

答:在一般的项目中,目标 UIViewController 都可通过类来创建后,可简单的实现属性传递。

  • 但如果是组件化架构项目,在跨组件调用时,我们为了减小功能之间的依赖,UIViewController 之间的属性传递实现就很不方便了,

此时如果用 WisdomRouterKit 框架来实现跨组件之间的数据传递就会非常轻松,可以说 WisdomRouterKit 为组件化而生。

3:WisdomRouterKit SDK 在iOS移动开发中能为我们解决哪些问题,实现哪些功能,有哪些优势?

答:在组件化架构项目中,为了将组件之间的依赖减小到最低,我们都会选择使用GitHub上的第三方Router框架。

  • 目前GitHub上的Router框架实现方案分两种:

(1)第一种方案,用协议实现:通过注册协议关联对象,协议实现方案是一个不错的选择,目前我们项目也是使用的协议Router。

但是,协议的使用缺点也很明显,使用过程是很会令开发者头疼。每当有属性或者方法改动及调整时,都需要重新发布 pods 新版本,并更新最新此组件的协议版本,

有多少地方进行组件交互,就需要多少协议对象,并进行注册协,随着需求迭代,你会发现协议库越来越庞大,且无发瘦身。

无发瘦身的原因是多个项目用到功能不一样,导致协议版本需求也不能一致,协议库需要在兼容老功能同时,为新功能写重复代码。

(2)第二种方案,用闭包实现:闭包实现方案也是一个不错的选择。

闭包实现方案的缺点也很明显:使用字典装载参数,传递参数,对功能扩张性太低,比如多模型对象和多闭包的数据传递。

  • 对于 WisdomRouterKit 的优点,上面两种实现Router方案的缺点,就是它的优点。

【简介】

1:一个强大的iOS路由器SDK,专门处理组件化各模块之间的数据传递。

2:WisdomRouterKit 可帮你完成跨组件页面之间的属性和闭包传值,并且支持属性集合和闭包集合传值,还支持无痕获取全局单列对象,无需各个组件之间进行任何引用,

也无需定义公共协议进行各组件之间关联,真正做到完全解偶,真正做到顶天立地。

3:对于项目将来功能或者业务代码快速的扩展叠加,无需人员维护,无需维护成本。

4:API的优势是调用方便,使用灵活,实现了简洁的追加注册调用,只需要数行注册代码,我们就可以展开接下来的Router功能。

5:WisdomRouterKit SDK是纯swift代码编写,保证了SDK高效性能,支持属性赋值过程中的异常数据抓取,能帮助开发快速定位问题。

6:OC项目的小伙伴们也不要愁,WisdomRouterKit SDK完全支持OC项目调用,尽管pod集成就是了。

【集成】

  • pod 集成:pod ‘WisdomRouterKit’
  • github链接:https://github.com/tangjianfengVS/WisdomRouterKit

【基本功能-传值】

【1】:无参数,无闭包,简单路由

iOS 组件化路由框架 WisdomRouterKit 的应用

【2】:有参数,无闭包,简单路由

iOS 组件化路由框架 WisdomRouterKit 的应用

注:”testSize”是”SecundViewController”的基本属性名称,这里把99.99赋值给”SecundViewController”的”testSize”。

WisdomRouterParam 创建指定 double 类型。

【3】:参数模型对象: testModel,简单路由

iOS 组件化路由框架 WisdomRouterKit 的应用

注:”testModel”是”SecundThreeViewController”的模型属性名称,这里把testModel赋值给”SecundThreeViewController”的”testModel”。

WisdomRouterParam 创建指定 model 类型。

【4】:参数模型对象集合: TestModel 集合,简单路由

iOS 组件化路由框架 WisdomRouterKit 的应用

注:”testModelList”是”ThreeViewController”的模型属性名称,这里把testModelList赋值给”ThreeViewController”的”testModelList”。

WisdomRouterParam 创建指定 modelList 类型。

【5】:闭包,简单路由

iOS 组件化路由框架 WisdomRouterKit 的应用

注:”closure”是”FourViewController”的闭包属性名称,这里把hander赋值给”FourViewController”的”closure”。

WisdomRouterHander 创建指定 hander 类型。

【6】:WisdomRouterKit 功能扩展

WisdomRouterKit 功能扩展请看这边文章:https://www.jianshu.com/p/5d6bd3e0505c

【进阶功能-获取全局单列】

  • 全局单列 Mode需要满足3个条件:

iOS 组件化路由框架 WisdomRouterKit 的应用

1:继承 WisdomRouterModel。

2:实现声明单列对象。

3:实现 WisdomRouterShareProtocol,并实现 share() 方法,返回值为声明的单列对象。

  • 全局单列 TestShareModel 获取案例:

iOS 组件化路由框架 WisdomRouterKit 的应用

1:shareName: 指定组件的单列Model对象 名称。

2:targetSubstituteClass: 用来作为获取组件单列Model对象的替身类,一般与组件单列Model对象同属性即可。

3:最后通过 as! 强解包生成 targetSubstituteClass 对应类型的Model对象。如果shareName错误或者非单列对象,会生成一个无属性值的对象。

【Router 注册】

  • 按照上面使用案例,我们在使用WisdomRouterKit时,发现没有成功。因为还需要对跨组件的UIViewController进行注册。
  • 注册包括3点:UIViewController的类型,和UIViewController的Mode属性l对象和闭包属性 。
  • 注册API:

           iOS 组件化路由框架 WisdomRouterKit 的应用          注:只注册下控制器类型           iOS 组件化路由框架 WisdomRouterKit 的应用          注:这里注册下控制器类型,并通过模型属性的名关联模型类型注册           iOS 组件化路由框架 WisdomRouterKit 的应用          注:这里注册下控制器类型,并通过闭包属性的名关联闭包注册

  • 注册案例:

— 无模型对象,无闭包

iOS 组件化路由框架 WisdomRouterKit 的应用

1:使用 @objcMembers 修饰,表示允许运行时获取属性。

2: 实现注册协议,包括实现协议方法。

        3: 通过 register 方法进行注册,这里没有参数。

        — 一个模型对象,一个闭包

        iOS 组件化路由框架 WisdomRouterKit 的应用

注:注册Model:通过属性名称和模型类型进行绑定。

注册闭包属性:在使用(router调用)的时候,会回调注册闭包,注册闭包返回对应的控制器和hander属性,我们只需要确定控制器和handerr类型,强行解包赋值就可以了。

【继承 WisdomRouterModel】

  • WisdomRouterKit 中用到的Model对象,都需要继承WisdomRouterModel,WisdomRouterModel对象中已经赋予了动态性。继承WisdomRouterModel后,自己创建的Model也赋予动态性。

【总结】

  • WisdomRouterModel SDK是反射机制实现一套的一套路由方案。
  • 本着为大家在开发中带来便捷,以及创建搭建组件化项目的连接桥梁,推出的WisdomRouterModel SDK,后期SDK功能还会更加完善,敬请期待。
  • 简书的 WisdomRouterModel 介绍请看之前写的文章,链接:https://www.jianshu.com/p/5d6bd3e0505c
  • 如有技术问题和技术纠正,请在下面留言或者加QQ497609288讨论。

iOS 组件化路由框架 WisdomRouterKit 的应用

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902