之前只管做项目,引用系统的动态库和一些第三方的静态库来使用,并没有太关注,静态库和动态库的区别,以及更深层的含义。。所以特意搜索学习了一番。
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。
静态库:以.a 和 .framework为文件后缀名。 动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。
静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。 动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内存。
让模拟器和真机通用一个静态库,我们可以使用终端命令来实现。命令格式:lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径
苹果现在可以使用自己封装的动态库,但自己的动态库只能打包签名有效,其实 和静态库没什么区别