use_frameworks!和#use_frameworks!的区别 转自:https://www.jianshu.com/p/0ae58a477459

1、 用cocoapods 导入swift 框架到swift项目和OC项目都必须要 use_frameworks!
2、用动态库,必须要在Podfile文件中添加 use_frameworks!

静态库:在编译时会将库copy一份到目标程序中,编译完成之后,目标程序不依赖外部的库,也可以运行。
缺点: 会使应用程序变大 动态库:(.dylib)编译时只存储了指向动态库的引用。可以多个程序指向这个库,在运行时才加载,不会使应用体积变大,但是运行时加载会损耗部分性能,并且依赖外部的环境,如果库不存在或者版本不正确则无法运行 Framework:实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发。

(1)如果在Podfile文件里不使用 use_frameworks! 则是会生成相应的 .a文件(静态链接库),通过 static libraries 这个方式来管理pod的代码。

(2)Linked:libPods-xxx.a包含了其它用pod导入的第三方框架的.a文件。

(3)如果使用了use_frameworks! 则cocoapods 会生成相应的 .frameworks文件(动态链接库:实际内容为 Header + 动态链接库 + 资源文件),使用 dynamic frameworks 来取代 static libraries 方式。

(4)Linked:Pods_xxx.framework包含了其它用pod导入的第三方框架的.framework文件。

use_frameworks! -> dynamic frameworks 方式 -> .framework

use_frameworks! -> static libraries 方式 -> .a

(1)swift项目cocoapods 默认 use_frameworks!
(2)OC项目cocoapods 默认 #use_frameworks!

1、用cocoapods导入OC框架到swift项目

(1)#use_frameworks! 必须创建头文件,在头文件里面 #import "xxx.h"
(2)use_frameworks! 如果有头文件,在头文件里面 #import "xxx/xxx.h",其它swift文件中用到不需要再import;如果没有头文件,则在每个需要用到的swift文件里 import xxx。

2、用cocoapods导入swift框架到swift项目

(1)必须use_frameworks!
(2)不需要头文件,在需要用到框架的swift文件里 import xxx

3、用cocoapods导入OC框架到OC项目

(1)#use_frameworks! 在需要用到的文件里 #import "xxx.h";也可以通过pch文件,用法类似swift中的头文件。
(2)use_frameworks! 与(1)类似,用法上没有区别。

总结:

(1)用swift项目考虑到会使用 OC 和 swift 两种第三方框架,所以Podfile中使用swift项目默认的 use_frameworks! 更为妥当,并且frameworks动态链接库具有一定的优势。

(2)可以建立一个Bridge头文件,用来import那些OC框架的.h文件:#import "xxx/xxx.h"。或者不建头文件,像swift框架一样,直接在需要用到的swift文件中import xxx。

解决Swift项目中use_frameworks!冲突的问题,详见:https://blog.csdn.net/feng2qing/article/details/73835805

最新文章

  1. js库
  2. CentOS搭建GitLab服务器
  3. spark2.0.1 安装配置
  4. markdown 设置字体颜色
  5. hibernate的数据库乱码问题
  6. Python大数据依赖包安装
  7. Myeclipse 自定义代码自动格式化(ctrl+alt+F)
  8. uva12716GCD XOR
  9. SSH中调用另一action的方法(chain,redirect)
  10. with admin option 与with grant option
  11. 通过VNC Viewer使用VMware虚拟机的远程桌面连接
  12. Centos-7 + Docker-1.12 中 devicemapper + direct_lvm 的 Docker 存储配置
  13. Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition
  14. Hadoop记录-Ganglia监控HDFS和HBase指标说明
  15. 当启动tomcat时出现tomcat setting should be set in tomcat preference page
  16. 机器学习入门-数值特征-数据四分位特征 1.quantile(用于求给定分数位的数值) 2.plt.axvline(用于画出竖线) 3.pd.pcut(对特征进行分位数切分,生成新的特征)
  17. mvc 在view视图中直接输出rdlc报表文件(Excel、PDF、Word)
  18. 用Handler的post()方法来传递线程中的代码段到主线程中执行
  19. fork 了别人的仓库后,如何将自己的代码和原仓库保持一致
  20. codevs 1160

热门文章

  1. linux中crw brw lrw等等文件属性是什么
  2. Kubernetes的搭建与配置(一):集群环境搭建
  3. CentOS7查询系统版本内核信息
  4. popen()/pclose()阻塞性问题验证
  5. NSObject
  6. (转)postgresql+postgis空间数据库使用总结
  7. 转://Oracle 11gR2 ASM磁盘组管理
  8. M100 组装教程
  9. mafintosh/end-of-stream
  10. Hibernate validator使用和自定义validator及整合Spring MVC