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/
  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/6duxz/p/5105947.html
Copyright © 2011-2022 走看看