问题来源:
1.swift项目pods MJRefresh 为了在swift正常使用 建了一个桥接文件
2.在项目中又使用了 SDWebImage 用于加载网络图片
根据说明加了Podfile一个 use_frameworks!
编译的时候问题来了
问题显示类似这样的错误:
failed to emit precompiled header '/Library/Developer/Xcode/DerivedData/MyprojectName-lajanjvhqjnfjksdsndsfkads/Build/Intermediates.noindex/PrecompiledHeaders/MyprojectName-Bridging-Header-swift_44AHJm3Z96qu-clang_2BIMGQVXGEZ09.pch' for bridging header '/Documents/MyProjectLocaiton/FoneApp-Bridging-Header.h'
问题解决方法:
了解了一下 use_frameworks! 下面是参考
https://www.jianshu.com/p/ac629a1cb8f5
//---------------------------------------------
静态库:
(静态链接库)(.a)在编译时会将库copy一份到目标程序中,
编译完成之后,目标程序不依赖外部的库,也可以运行 缺点是会使应用程序变大
动态库:
(.dylib)编译时只存储了指向动态库的引用。 可以多个程序指向这个库,
在运行时才加载,
不会使体积变大, 但是运行时加载会损耗部分性能,并且依赖外部的环境,如果库不存在或者版本不正确则无法运行
Framework:实际上是一种打包方式,将库的二进制文件,头文件和有关的资源文件打包到一起,方便管理和分发。
对于是否使用Framework,CocoaPods 通过use_frameworks来控制
1.不使用use_frameworks! -> static libraries 方式 -> 生成.a文件
在Podfile中如不加use_frameworks!,cocoapods会生成相应的 .a文件(静态链接库),
Link Binary With Libraries: libPods-**.a 包含了其他用pod导入有第三库的.a文件
2.use_frameworks! -> dynamic frameworks 方式 -> 生成.framework文件
使用了use_frameworks!,cocoapods会生成对应的frameworks文件(包含了头文件,二进制文件,资源文件等等)
Link Binary With Libraries:Pods_xxx.framework包含了其它用pod导入的第三方框架的.framework文件
1.纯oc项目中 通过pod导入纯oc项目, 一般都不使用frameworks
2.swift 项目中通过pod导入swift项目,必须要使用use_frameworks!,
在需要使用的到地方 import AFNetworking
3.swift 项目中通过pod导入OC项目
1) 使用use_frameworks,在桥接文件里加上#import "AFNetworking/AFNetworking.h"
2)不使用frameworks,桥接文件加上 #import "AFNetworking.h"
//---------------------------------------------
这里我发现swift 项目中通过pod
使用use_frameworks!
导入OC项目可以直接引用使用 放入 桥接文件的可以直接使用
问题解决了,但还是一知半解的状态,有大神知道具体原因的欢迎留言