一、什么是库?

库是共享程序代码的方式,一般分为静态库和动态库。

二、静态库与动态库的差别?

静态库:链接时完整地拷贝至可运行文件里。被多次使用就有多份冗余拷贝。

动态库:链接时不复制。程序执行时由系统动态载入到内存,供程序调用,系统仅仅载入一次,多个程序共用。节省内存。

三、iOS里静态库形式?

.a和.framework

四、iOS里动态库形式?

.dylib和.framework

五、framework为什么既是静态库又是动态库?

系统的.framework是动态库,我们自己建立的.framework是静态库。

六、a与.framework有什么差别?

.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。

.a文件不能直接使用,至少要有.h文件配合,.framework文件能够直接使用。

.a + .h + sourceFile = .framework。

建议用.framework.

七、为什么要使用静态库?

方便共享代码。便于合理使用。

实现iOS程序的模块化。

能够把固定的业务模块化成静态库。

和别人分享你的代码库,但不想让别人看到你代码的实现。

开发第三方sdk的须要。

八、制作静态库时的几点注意:

1 注意理解:不管是.a静态库还.framework静态库,我们须要的都是二进制文件+.h+其他资源文件的形式,不同的是,.a本身就是二进制文件,须要我们自己配上.h和其他文件才干使用。而.framework本身已经包括了.h和其他文件。能够直接使用。

2 图片资源的处理:两种静态库,一般都是把图片文件单独的放在一个.bundle文件里,一般.bundle的名字和.a或.framework的名字同样。

.bundle文件非常好弄,新建一个目录,把它改名为.bundle就能够了。右键,显示包内容能够向当中加入图片资源。

3 category是我们实际开发项目中经经常使用到的,把category打成静态库是没有问题的,可是在用这个静态库的project中。调用category中的方法时会有找不到该方法的执行时错误(selector not recognized)。解决的方法是:在使用静态库的project中配置other linker flags的值为-ObjC。

4 假设一个静态库非常复杂。须要暴露的.h比較多的话。就能够在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字同样),然后把全部须要暴露出来的.h文件都集中放在这个.h文件里,而那些原本须要暴露的.h都不须要再暴露了,仅仅须要把.h暴露出来就能够了。

最新文章

  1. windows上如何搭建Git Server
  2. <<Bootstrap基础教程>> 新书出手,有心栽花花不开,无心插柳柳成荫
  3. percona-toolkit 之 【pt-deadlock-logger】说明
  4. 三、freemarker数据、模版指令
  5. Struts1中ActionForward的技巧介绍
  6. 【剪枝】HDU 1010——tempter of the bone
  7. Peter Pan By: J. M. Barrie
  8. JavaScript中的面向对象的讨论(转)
  9. Android系统之灯光系统--通知灯深入分析
  10. sql关键字之null
  11. ConcurrentHashMap和HashTable的区别
  12. SpringBoot 添加mybatis generator 自动生成代码插件
  13. 在无向图中找最短桥(tarjan)
  14. .NET Core玩转机器学习
  15. redis 初步认识一(下载安装redis)
  16. json-server基本使用
  17. python的类的 静态属性 类方法 静态方法
  18. zookeeper快照清理
  19. Beyond Compare脚本:命令行批量比较文件并生成html格式的差异报告
  20. luoguP2735 电网 Electric Fences

热门文章

  1. RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了
  2. hdu 1085(普通母函数)
  3. B1567 [JSOI2008]Blue Mary的战役地图 二分答案+hash
  4. [.Net] C# Excel操作类 ExcelHelper
  5. encodeURIComponent编码java后台解码出现乱码问题
  6. js设计模式-工厂模式(XHR工厂)
  7. IO流读取文件内容时,出现空格的问题(未找到原因)
  8. 修复wordpress插件编辑器漏洞
  9. 让Kafka在scala里面跑起来
  10. Github 团队协作基本流程与命令操作 图解git工作流程