iOS 动态库与静态库

1、库

库是写好的现有的,成熟的,可以复用的代码。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。iOS的库分为:静态库(.a.framework)和动态库(.framework)。

2、静态库

1、静态库在编译时加载,链接时会完整的复制到可执行文件中。
2、静态库的可执行文件通常会比较大,因为所需的数据都会被整合到目标代码中,因此编译后的执行文件不需要外部库的支持,直接就能使用。
3、有多个app使用就会被复制多份,不能共享且占用更多冗余内存。
4、所有的函数都在库中,因此当修改函数时需要重新编译。
5、静态库导入项目时,Embed需要设置为Do not embed

3、动态库

1、动态库在程序运行时由系统动态加载到内存,供程序调用,如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行。
2、动态库的文件会比较小,因为在编译过程中,数据并没有整合到目标代码中,只有在执行到该函数时才去调用库中的函数,所以首次加载时比较耗时。
3、多个程序可以共享内存中同一份库资源,系统只加载一次,多个程序可共用,节省内存空间。
4、库是动态的,因此修改库中函数时,不需要重新编译。
5、动态库导入项目时,Embed需要设置为Embed and sign或者Embed Without Signing

你可能感兴趣的:(iOS 动态库与静态库)