一般我们创建多个子工程多适用于:代码抽层,业务逻辑和数据处理高度抽离、模块化,例如可以将model层和network层抽离,一个项目只建立一个公共工程,每次新建项目,只需要依赖这个工程就行了,代码模块化之后我们可以对每一个模块持续优化集成,便于实现一些更复杂的需求和结构设计(分解项目,达到低耦合);
a. 创建正常的主项目(AddSubProjectDemo)以及子工程(subProject);这里注意一下子工程创建的时候是Cocoa Static Library;
b. 添加子工程及其依赖;
打开主工程添加子工程,选择Drag或Add File to "AddSubProjectDemo",结束后如图:
c. 在工程target -> Build Phases -> Link Binary With Libraries中添加libsubProject.a
d.在工程target -> Build Settings -> Search Paths -> Header Search Paths中加入子文件目录;
关于Header Search Paths这里说明一下:
1.$(inherited)
target在设置自己路径的时候如果加了这个,那么就是继承project里设置的路径。如果不需要继承就不加,要不然乱加有可能整混导致路径错误。
2.带引号的路径和不带引号的路径
带引号主要是预防路径里有空格导致本来一个路径变成了两个路径,因为空格分开就被解析位两个路径,所以最好路径带上引号。
3.$(SRCROOT) / $(PROJECT_DIR)基本没啥区别,都是指向*.xcodeproj所在的路径
4.recursive遍历该目录,non-recursive默认路径设置;不遍历该目录.
e.工程环境配置好后,本例在子工程的subProject.h 和.m加个测试方法,然后在主工程中调用实现;
一般使用subProject的时候,都是和workspace一起使用的,多个子工程统一由一个workspace管理, 复杂项目的拆解可以考虑subProject+workspace+cocoapod 方式组合完成;(demo参考g ithub上的subproject)