将iOS项目进行子工程化(一)

  在iOS项目开发中,随着项目的越来越大,工程的结构化会变差,编译的速度也会越来越慢。使用静态库或动态库的方式来构建子工程不仅可以加快项目的编译速度,从结构上,也优化了项目的组织。有两种方式来来对项目进行子工程化,可以在项目中创建子项目,也可以创建并列的项目,建立项目依赖。需要注意,无论哪种方式,你都应该尽量保证子工程不要用到主工程中的内容,如果必须这样做,你可以采用代理或其他回调编程方式来转交给主工程自己处理。

一、创建子工程的一个示例

    使用Xcode新建一个命名为ProjectDemo的工程,在ProjectDemo工程中再次新建一个framework库工程,点击新建文件中的Project...选项,选择其中的Cocoa Touch Framework工程(创建Cocoa Touch Static Library则会打包为静态库)。

将iOS项目进行子工程化(一)

将新创建的工程命名为LoginLib,用来模拟项目中的登录模块。需要注意,新建工程时,需要将其加入ProjectDemo组,如下图:

将iOS项目进行子工程化(一)

对于创建的LoginLib工程,你可以创建一个LoginLib.h头文件用来公开外界需要使用到的类,便于演示,我在里面创建一个视图控制器和一个类别工具类,结构如下:

将iOS项目进行子工程化(一)

配置LoginLib的头文件选项,将外界需要用到的进行公开,如下:

将iOS项目进行子工程化(一)

现在,分别编译LoginLib工程和ProjectDemo工程,都没有问题,但是你依然无法在ProjectDemo工程中使用LoginLib库中的内容,你需要建立主子工程的关联,在ProjectDemo工程中建立依赖工程并接入动态库,如下所示:

将iOS项目进行子工程化(一)

配置Target Dependencies的作用是确保每次主工程编译前都会先对所依赖的工程进行编译。之后,在ProjectDemo工程中导入LoginLib相关头文件即可使用其中功能。

注意,如果报错找不到头文件,你需要设置一下头文件的寻找路径,在ProjectDemo的Build Setting中搜索header,如下图

将iOS项目进行子工程化(一)

设置Header Search Paths即可。



上一篇:上海引领智慧城市建设 互联网照明或大有可为


下一篇:IOS项目之弹出动画三