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

一、什么是库(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都是静态库

相关推荐
冰淇淋真好吃2 小时前
iOS实现 WKWebView 长截图的优雅方案
ios
前端不太难7 小时前
Flutter / RN / iOS,在长期维护下的性能差异本质
flutter·ios
搜狐技术产品小编20231 天前
精通 UITableViewDiffableDataSource——从入门到重构的现代 iOS 列表开发指南
ios·重构
tangweiguo030519871 天前
SwiftUI 状态管理完全指南:从 @State 到 @EnvironmentObject
ios
Digitally1 天前
如何轻松地将文件从 PC 传输到 iPhone
ios·iphone
iosTiov1 天前
当IPA遇见信任:解密ios生态中“签名”的真正力量
ios·团队开发·苹果签名·稳定
游戏开发爱好者81 天前
如何使用 AppUploader 提交上传 iOS 应用
android·ios·小程序·https·uni-app·iphone·webview
和沐阳学逆向1 天前
iOS 18 越狱教程:palera1n + 巨魔安装全流程
ios·巨魔商店·ios越狱·ios18越狱
ii_best2 天前
安卓/ios脚本开发辅助工具按键精灵横纵坐标转换教程
android·开发语言·ios·安卓
先飞的笨鸟2 天前
2026 年 Expo + React Native 项目接入微信分享完整指南
前端·ios·app