iOS 中的那些库(1)
2016-10-25 本文已影响559人
酷酷的哀殿
前言
最近因为某些原因,看到了很多与“库”相关的文章。但是,很多文章在经过英语→汉语的转换后都会丢失很多信息,让人难以理解。所以,这篇文章会好好的总结一下 iOS 中的那些“库”。
基本概念
-
库:对应的英文为 library。通过组合不同的前缀,它会有不同的意义。比如,开源库,动态库,静态库。
-
开源库:我们经常用到的第三方库基本上都是开源库。比如知名的有:AFNetworking/SDWebImage。
-
闭源库:常用的地图类 SDK、统计类 SDK 都属于闭源库。它们的源码是不向公众开放的。
-
静态库:静态库是目标文件的集合或者打包。静态库的常见后缀是 .a。
-
动态库:动态库不会成为可执行文件的一部分,相反,它可以应用启动时或者运行时再进行加载。因为静态库会被包含到应用代码中一起加载,所以,为了加快启动速度,降低内存占用,我们会使用动态库。同时,动态库可以使得在不重新编译项目的情况下进行平滑升级来获得新的性能提升。动态库的常见后缀是 .dylib。
-
框架:对应的英文是 framework。框架实际上是一个文件夹。它是一系列资源的集合。我们现在常见的用法都是使用 动态库框架或者静态库框架。
-
框架可以把相关的独立资源聚集起来。它使得安装、卸载、定位资源更加容易。
-
框架可以包含更多类型的资源。比如,头文件、相关文档。
-
不同版本的库可以放到同一个 bundle中。这使得向后兼容成为可能。
-
任何情况下,只会有一份只读拷贝存在内存中。无论有多少进程使用它。这样可以降低内存占用、提高性能。
请注意,虽然不常见,但是框架也可以只包含图片资源。
-