framework制作

xcode 8 /iOS10下静态库和动态库的区别 && framework的制作

雨燕双飞 提交于 2019-12-02 04:14:29
这里输入引用文本本文记录一下,在SDK开发完成后,如何高效率制作framework。 ##iOS关于静态库、动态库的一些基本概念和理解误区 ###1. 库 库是源代码经过 编译 ,形成的 二进制代码 ,别人项目中使用我们的库的时候,库在参与编译的时候,直接 link 就OK了,按照link的方式,可以把库分为 静态库 和 动态库 ###2. 静态库 静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了。 一般以**.a** 和 .framework 为文件后缀名 这种做法是牺牲应用“体量”来节省编译时间。 ###3. 动态库 与静态库相反,动态库在编译时并不会被拷贝到目标程序中,目标程序中只会存储指向动态库的引用。等到程序运行时,动态库才会被真正加载进来。 动态库的优点是,不需要拷贝到目标程序中,不会影响目标程序的体积,而且同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库)。 同时,编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。动态库带来的问题主要是,动态载入会带来一部分性能损失,使用动态库也会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行 以**.tbd**(之前叫.dylib) 和** .framework** 为文件后缀名 苹果系统为我们提供了很多动态链接库

iOS中制作可复用的框架Framework

 ̄綄美尐妖づ 提交于 2019-11-30 23:23:50
iOS中制作可复用的框架Framework 在iOS开发中,我们时常会使用一些我们封装好的管理类,框架类,方法类等,我们在实现这些文件时,可能还会依赖一些第三方库或者系统库。如果每次我们复用这些代码时,都要将关联的这些东西进行导入,甚至还要进行arc和mrc的编译设置,会浪费我们很大的精力。除此之外,如果项目需要多人合作,你可能也并不希望你的源代码暴漏在所有人的面前,这个时候,我们就可以使用静态库或者动态库的方式来对我们的代码进行包装,便于复用。静态库的制作方法在一篇旧的博客中有描述: http://my.oschina.net/u/2340880/blog/398887 。相比静态库文件,动态库的效率会更高且封装性更好,这里主要讨论动态库的制作。 xcode6后支持在xcode中制作动态库,并且过程也十分简单。 新建一个项目,选择framework: 之后我们在里面编写我们的代码,比如我们创建一个MyObject类: @interface MyObject : NSObject -(void)myLog; @end @implementation MyObject -(void)myLog{ NSLog(@"framework"); } @end 和静态库类似,如果我们不做任何处理,打包出来的库文件只能在模拟器或者只能在真机上使用,为了方便我们调试,我们可以添加一个脚本命令