zoukankan      html  css  js  c++  java
  • iOS创建子工程

    实际开发中,我们可能会同时开发好几个端,比如楼主目前开发的家教平台,需要老师端,家长端,助教端三个端。有很多工具方法,或者封装的自定义控件都是可以复用的。我们就可以把公用的代码抽取出去,新建一个工程,统一管理。同步维护一份代码,不需要在各个端各自维护。

    创建子工程很简单:

    1 假设你已经有了自己的工程demo.xcodeproj,首先我们需要创建一个子工程,(File->new->project),我们要选择静态库。如图

    点击下一步,给子工程起名字:subProject

    点击下一步:选择Add to自己的工程

    到此,第一步就结束了,我们创建了一个子工程,而且也添加到了自己的工程里面,但是,这样在自己工程中还是无法引用子工程的类。我们还需要设置一下自己工程的环境变量。

    2 设置环境变量:

    自己的工程demo下,选择Bulid Settings ,找到User Header Search Paths。设置自己工程的绝对路径,然后设置递归查找文件夹。

    3.添加target的依赖关系

    我们要保证编译demo的时候先编译subProject。

    选中demo Target,然后选中其Build phases选项,添加subProject target

    还有生成的.a文件也得添加进来。选择Link Binary With Libraries

    这时候一些基本的方法已经可以用起来了。

    4、如果子工程中有图片或者依赖文件怎么办?

    要把相关的依赖图片copy出去:选中subProject target,进入Build phases选项,找到最下面的copy file栏,添加相关的文件:

    屏幕快照 2013-04-02 下午10.20.15

    5 如果存在category的时候,在demo工程Other Linker Flags里面添加编译的命令:

    注意:在ios5以及以上版本中,引入别的工程(如上)或者静态库,
    并且StoryBoards中使用了【引入的外部类(外部工程或者静态库里面的类)】,
    那么Other Linker Flags 里面必须加上-ObjC,否则,会console会报错
    error:Unknown class <外部的类名> in Interface Builder file.

    引用:http://developer.apple.com/library/mac/#qa/qa1490/_index.html
     
    -ObjC,This flag causes the linker to load every object file in the library that defines an Objective-C class or category
    意思是,使用这个标识,会把静态库中,定义了Objective-C class的文件或者定义了category类别的文件,全部加载进来。
    因为你的静态库里面扩展了一个已存在的类的category,那么这个category是不会加载进来的。
    在程序运行中,调用此类别的方法,就会报错“selector not recognized”。
     
    Important: For 64-bit and iPhone OS applications, there is a linker bug that prevents -ObjC from loading objects files from static libraries that contain only categories and no classes. The workaround is to use the -all_load or -force_load flags. 
    上面的意思是说
    对于64位操作系统或者ios系统,-Objc存在一个bug,就是只包含categories ,而没有任何class的静态库,是不会被加载进来。
    拮据额这个bug:使用标识符:-all_load 或者 -force_load
     
    子工程导入完成。整个框架瞬间高大上起来了。参考文章:https://www.ganlvji.com/xcode_subproject_project_dependency/
  • 相关阅读:
    用GDB调试程序(一)
    Linux编程基础——GDB(设置断点)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月12日~10月18日)
    北京Uber优步司机奖励政策(10月19日~10月25日)
    借贷宝人脸识别无需绑卡,需合作者共同冲刺
    王璐首次详解借贷宝诞生历程 直面创业从0到1
    创造信用收入 借贷宝颠覆创新普惠金融
    php中,如何将编译后的代码,反编译回去。
    chrome调试ajax
    提示text还能输入多少字节
  • 原文地址:https://www.cnblogs.com/6duxz/p/5105947.html
Copyright © 2011-2022 走看看