iOS的组件化

什么是组件化

我整理了一个PDF 如下:

在这里插入图片描述

那么如何展开组件化呢?

首先希望大家用自己手头上比较熟悉的代码来试一下,先按照上面思维导图把自己项目做一个划分。然后这里通过一个道具来对划分好的模块进行工程管理,这个工具大家作为iOS开发也都非常熟悉就是“cocoaPod”。

什么是cocoapod呢?

其实cocoapod就是一个插件,它作为大多数iOS开发管理第三方的工作所以大家都不会陌生。我整理了一下:
在这里插入图片描述

如何创建组建

//cd 到对应文件夹下
pod lib create XXXModule
ios
objc
yes
none
no
JS

模块化创建好了以后就能得到一个XXXModule的文件夹,然后就可以到里面的classes进行代码的编辑了。
从我们的工程把首页模块的代码拷贝进去然后就可以进行下一步了。

cd XXXMoudle/Example 
pod install 

然后就可以发现在example中可以看到我们刚添加的代码了。实际上就在刚的步骤,example充当了调用我们模块的使用者,XXXMoudle就是模块的编辑者。
然后 我们在example中打开我们模块,command+B一下是否就发现代码编译不通过对吧,哈哈 接下来我们对对应的问题进行改进。

第三方模块和宏的导入

在工程中pods模块找到pod文件夹找到XXXmodule.podsepcs 文件,然后拖到最下就可以看到对应的s.dependency ‘AFNetworking’,‘~>2.3’ ,把// 注析去掉然后回到终端进行pod install 就发现这时候能在我们的工程中看到对应的AFNetworking库。
现在我们可以把原来的首页模块依赖第三方库拷贝到s.dependency中了

导入宏

在Pos的podfile中,
pod ‘XXXModule’, :path=>‘…/…/XXXModule/XXXX.h’
(XXX.h就是对应宏)

导入资源文件

1.把资源文件导入到Assets文件夹
2.修改example文件的bundle读取路径
3.去到文件里面的XXXmodule.podsepcs,把s.resource_bundles的注析放开

NSString *bundlePath = [[NSString bundleforclass:[self class]].resourcePath stringByAppendingPathComponent@"/XXXTest.bundle"];
UIImage *img = [UIImage imageWithName:@"" inBundle:bundlePath compatibleWithTraitCollection:nil];

如果有本地json文件也是放到Assets的文件夹,然后编辑路径再去读取。

模块间的通讯

  1. 路由(具体可以参考蘑菇街)
  2. 通过中间层 target-action
  3. protocol-class
    这边介绍两个模块通讯的的两个第三方库: CTmediator , beehive 大家可以去阅读一下。

猜你喜欢

转载自blog.csdn.net/lingjunjie/article/details/129131634