static library 和 dynamic framework 有哪些异同

通过创建并比较Xcode的静态库(static library)和动态框架(dynamic framework)项目,发现framework是一个容器,能够容纳静态库或动态库。关键点在于,framework的mach-o类型可调整,静态库转换为framework较为困难,因此通常建议直接创建framework项目。

研究办法:创建不同类型的同名项目,比较其 project.pbxproj 文件的差异

第1步:

用 Xcode 创建项目名为 T7 的 framework,不要 test,不要任何附加的东西

将项目根目录 T7 改名为 T7-framework

第2步:

用 Xcode 创建项目名为 T7 的 static library

将项目根目录 T7 改名为 T7-library.static

第3步:

比较差异

vimdiff \ 
T7-framework/T7.xcodeproj/project.pbxproj \
T7-library.static/T7.xcodeproj/project.pbxproj
差异
staticframework
productlibT7.aT7.framework
include
install pathusr/local/lib/$(LOCAL_LIBRARY_DIR)/Frameworks

productType

com.apple.product-type.library.staticcom.apple.product-type.framework
MACH_O_TYPE
staticlibmh_dylib

重要

1. framework 只是容器,可以装 static lib 也可以装 dynamic lib,修改 mach-o type 就可以完成,且其他特性不发生改变。

2. 由于 static lib 很难转化为 framework,而 framework 也可以装 static lib,所以,一般情况下,创建项目时选择 framework 就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值