iOS 动态库与静态库的区别

王者杯·14天创作挑战营·第8期 10w+人浏览 290人参与

一、概括

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

二、详细对比

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

三、总结

  • 静态库核心:“一次嵌入,终身绑定”,简单无依赖但冗余 + 难更新;
  • 动态库核心:“独立存在,按需加载”,省内存 + 易更新但需处理依赖 + 签名;
  • 选择原则:小体积、少更新用静态库;大体积、需更新、多共享用动态库。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值