为了实现项目的组件化,今天开始研究蘑菇街组件化。
Protocol方案:
第一步,写一个简单的项目,项目内容是
FirstVC ->SecondVC->ThirdVC跳转。
第二步,新建一个项目,将FirstVC、SecondVC、ThirdVC导入到新的项目中来。
第三步,新建一个继承于NSObject的ModuleManager,也就是组件管理中心。
第四步,新建一个继承于NSObject的CompontProtocol,也就是协议中心。
然后在CompontProtocol中添加ProjectAProtocol协议:
![](https://img.haomeiwen.com/i711728/6dc0629c9b24f1f1.png)
第五步,在ModuleManager.h中添加三个方法:
![](https://img.haomeiwen.com/i711728/d83f366a01ac12d2.png)
第六步,在ModuleManager.m中实现这三个方法:
![](https://img.haomeiwen.com/i711728/8defd596d1aef83f.png)
![](https://img.haomeiwen.com/i711728/5521f010da56aa78.png)
![](https://img.haomeiwen.com/i711728/9d9f202335f92a08.png)
第七步,前往FirstViewController,也就是我们添加组件的入口VC,做如下处理:
![](https://img.haomeiwen.com/i711728/27cc89257cdde9af.png)
FirstViewController.m:
![](https://img.haomeiwen.com/i711728/14065d7521395e72.png)
![](https://img.haomeiwen.com/i711728/15826e38da68c841.png)
![](https://img.haomeiwen.com/i711728/d901edbd288da4e0.png)
本步综述:
导入ModuleManager和CompontProtocol头文件。
签订协议。
在load方法中注册本类与协议。
实现协议方法。
特定条件触发的block,需要保存原block,触发后回传值。
第八步,在本项目的ViewController中导入ModuleManager和CompontProtocol的头文件,然后添加按钮,并在按钮点击事件中写:
![](https://img.haomeiwen.com/i711728/880dc594c2347c87.png)
第九步,运行:
![](https://img.haomeiwen.com/i711728/7021c36d4e929d1c.gif)
效果可以,那么那些处理的信息呢?
看看打印台:
![](https://img.haomeiwen.com/i711728/2751cbe81a458620.png)
整体剖析:
组件(FirstVC-SecondVC-ThirdVC),组建管理中心(ModuleManager),协议中心(CompontProtocol),新外壳(新建的项目)关系:
组件和组件管理中心、协议中心耦合
新外壳中的VC与组件中心和协议中心耦合。
新外壳的ViewController与组件无关联。
至此,我们已经实现了Protocol方案的组件化~
加油~
网友评论