iOS 动态库与静态库的区别

一、概括

  • 静态库:编译时嵌入目标程序,与程序融为一体,无独立文件;
  • 动态库:运行时加载,独立文件,可被多个程序共享,不嵌入目标程序。

二、详细对比

对比维度 静态库(.a/.framework) 动态库(.dylib/.framework)
链接时机 编译 / 链接期(静态绑定) 运行时(动态绑定,dyld 加载)
代码存在形式 完整复制到目标程序(主程序 / 动态库) 独立文件,目标程序仅存引用地址
安装包体积 增大(含库代码) 不变(仅含引用,库单独打包)
更新维护 需重新编译目标程序 可单独更新(替换动态库文件)
共享性 不可跨程序共享(多程序各存一份) 可跨程序共享(系统库 / 自定义库均支持)
依赖关系 无额外依赖(代码已嵌入) 运行时需确保库存在,否则崩溃
符号冲突风险 高(重复引用易触发 Duplicate Symbol) 低(独立命名空间,符号隔离)
重复引用影响 代码冗余 + 符号冲突(跨主程序 / 动态库引用) 无冗余(仅加载一次,多引用共享)
平台限制(iOS) 无签名要求,越狱 / 非越狱均支持 需签名,非越狱需开发 / 企业证书,上架需符合规则
调试难度 低(代码嵌入,断点直接命中) 高(需确保库符号文件完整,加载路径正确)
内存占用 启动时加载,内存占用较高 按需加载 + 共享,内存占用较低
适用场景 轻量工具库、无频繁更新、需避免依赖冲突 核心功能库、需单独更新、多程序共享、大型库

三、总结

  • 静态库核心:"一次嵌入,终身绑定",简单无依赖但冗余 + 难更新;
  • 动态库核心:"独立存在,按需加载",省内存 + 易更新但需处理依赖 + 签名;
  • 选择原则:小体积、少更新用静态库;大体积、需更新、多共享用动态库。
相关推荐
美狐美颜SDK开放平台2 小时前
多场景美颜SDK解决方案:直播APP(iOS/安卓)开发接入详解
android·人工智能·ios·音视频·美颜sdk·第三方美颜sdk·短视频美颜sdk
wuxianda10304 小时前
苹果App上架4.3a被拒解决方案汇报总结
ios·uni-app·objective-c·cocoa·苹果上架·4.3a
andr_gale6 小时前
04_rc文件语法规则
android·framework·aosp
SameX9 小时前
用 SpriteKit 做了个存钱罐 App,30 枚硬币同时掉帧率直接崩了
ios
for_ever_love__9 小时前
UI学习:单例传值
学习·ui·ios·objective-c
for_ever_love__9 小时前
UI学习:通知传值
学习·ui·ios·objective-c
2501_9151063210 小时前
在Mac上搭建iOS开发环境的详细步骤与注意事项
ide·vscode·macos·ios·个人开发·swift·敏捷流程
想个名字想老半天10 小时前
uni 离线打包 ios,适用于自定义 ios系统最低适配 保姆级教程
macos·ios·cocoa
No Silver Bullet10 小时前
iOS开发进阶(二十四):一文读懂iOS发布证书,描述文件到期后,在工程中如何进行替换
ios