iOS之动态库和静态库的区别

手机游戏开发者 2024-9-15 04:46:33 149 0 来自 中国
一、什么是库(framework)

库是步调代码的聚集,是步调开发者与其他开发者之间举行代码共享的一种方式。
库根据源代码公开的情况可以:

  • 开源库

    • 开源库的源代码可见,好比afnetworking。

  • 闭源库

    • 闭源库的源代码不可见,是一段编译好的二进制代码

闭源库有根据相对编译时和运行时:

  • 静态库
  • 动态库
二、静态库和动态库区别

1、格式上的区别:

静态库的格式:

  • .a
  • .framework
动态库的格式:

  • .dylib
  • .framework
但是体系的.framework都是动态库
2、时间上区别

静态库:

  • 编译时会被拷贝到可实行文件中
动态库:

  • 运行时由体系加载到内存
3、使用上的区别:

静态库使用:

  • 在编译时会被拷贝到可实行文件中,使用多次就会被多次拷贝。
优势:

  • 编译完成之后,这个静态库也就没有什么作用了。
劣势:

  • 增长了可实行文件的体积
动态库使用:

  • 在运行时由体系加载到内存,类似的动态库只加载一次,供多个步调调用,节省内存。
在iOS8之前,自界说的动态库是不允许使用的。但是iOS8中,随着extension的出现,动态库才开始有效武之地。
三、怎么区分动态库和静态库

由于.a肯定是静态库,.dylib肯定是动态库,以是区分重要针对.feamework情势
1、通过下令行指令举行区分


  • cd xx.framework
  • file xx
xx为.framwork下的二进制文件


  • 判定:静态库包罗“current ar archive random library”字样. 动态库包罗“dynamically linked shared library”字样
2、根据是否是体系的.framework

一样平常情况下:

  • 体系的.framework都是动态库
  • 非体系的都是.framework都是静态库
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2025-6-28 14:07, Processed in 0.147636 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表