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

相关推荐
2501_9160074716 小时前
手机使用过的痕迹能查到吗?完整查询指南与步骤
android·ios·智能手机·小程序·uni-app·iphone·webview
從南走到北17 小时前
JAVA国际版同城外卖跑腿团购到店跑腿多合一APP系统源码支持Android+IOS+H5
android·java·ios·微信小程序·小程序
alengan20 小时前
苹果企业签名流程
ios·iphone
Digitally1 天前
如何在Mac上同步iPhone短信
macos·ios·iphone
2501_915106321 天前
App HTTPS 抓包 工程化排查与工具组合实战
网络协议·ios·小程序·https·uni-app·php·iphone
2501_916008891 天前
金融类 App 加密加固方法,多工具组合的工程化实践(金融级别/IPA 加固/无源码落地/Ipa Guard + 流水线)
android·ios·金融·小程序·uni-app·iphone·webview
2501_915921431 天前
Fastlane 结合 开心上架(Appuploader)命令行版本实现跨平台上传发布 iOS App 免 Mac 自动化上架实战全解析
android·macos·ios·小程序·uni-app·自动化·iphone
游戏开发爱好者81 天前
iOS 上架要求全解析,App Store 审核标准、开发者准备事项与开心上架(Appuploader)跨平台免 Mac 实战指南
android·macos·ios·小程序·uni-app·iphone·webview
qixingchao1 天前
iOS SwiftUI 动画开发指南
ios·swiftui·swift
alengan1 天前
ios支付
macos·ios·cocoa