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都是静态库

相关推荐
用户0935 分钟前
SwiftUI Charts 函数绘图完全指南
ios·swiftui·swift
YungFan40 分钟前
iOS26适配指南之UIColor
ios·swift
权咚17 小时前
阿权的开发经验小集
git·ios·xcode
用户0917 小时前
TipKit与CloudKit同步完全指南
ios·swift
法的空间1 天前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
2501_915918411 天前
iOS 上架全流程指南 iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传 ipa 与审核实战经验分享
android·ios·小程序·uni-app·cocoa·iphone·webview
00后程序员张1 天前
iOS App 混淆与加固对比 源码混淆与ipa文件混淆的区别、iOS代码保护与应用安全场景最佳实践
android·安全·ios·小程序·uni-app·iphone·webview
Magnetic_h1 天前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
00后程序员张2 天前
详细解析苹果iOS应用上架到App Store的完整步骤与指南
android·ios·小程序·https·uni-app·iphone·webview
前端小超超2 天前
capacitor配置ios应用图标不同尺寸
ios·蓝桥杯·cocoa