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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面介绍过制作过程,这里不讲如何制作动态库、静态库。 静态库和动态库都是以二进制提供代码复用的代码库。 静态库常见...
    纸简书生阅读 22,923评论 10 96
  • 编译器 LLVM 是编译器工具链技术的一个集合。而其中的 lld 项目,就是内置链接器。 编译器会对每个文件进行编...
    梦蕊dream阅读 1,316评论 0 4
  • 声明: 原文链接 动态库 与 静态库 使用静态库的好处1,模块化,分工合作2,避免少量改动经常导致大量的重复编译连...
    reboot_q阅读 751评论 0 1
  • 什么是库 ? 库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。库从本质上来说是一种可执行代码的...
    高先生Devin阅读 428评论 0 0
  • 动态库合并: .m文件经过编译器,汇编器,生成一个mach-o中间文件,.o文件不能被执行,要经过连接器,生成一个...
    吕小苔阅读 2,282评论 0 3