Duplicate interface definition for class ‘AFHTTPResponseSerializer‘错误

事情经过

今天编译公司老的oc项目因为我使用了swift,之前混编没有出错,直到我再podfile里面添加了use_frameworks!,因为有的第三方库要使用这句话,然后编译出现了20多条错误,
我的项目是oc项目,但是我要使用我的swift文件的代码.(如果着急直接看最下面的最终解决方案,上面是swift项目的方法,但是不能根本解决oc项目使用swift文件和库)

基本就是下面这些错误

Duplicate interface definition for class ‘AFHTTPResponseSerializer’
No type or protocol named ‘AFURLResponseSerialization’
Reference to ‘AFURLResponseSerialization’ is ambiguous
Duplicate interface definition for class ‘AFImageResponseSerializer’

主要原因

因为添加use_frameworks!以后swift项目会从静态库或者动态库里面编译第三方库.然后我再桥接文件 项目名-Bridging-Header.h 中又包含了一次 第三方库,所以导致重定义,编译器不知道到底要链接哪一个文件造成的错误,所以解决方法就是:在桥接文件中删除掉
//#import
把重定义的AFNetworking 注释掉,这样因为podfile中有了use_frameworks!所以依然能找到链接的第三方库在哪里.

下面是出错的图

Duplicate interface definition for class ‘AFHTTPResponseSerializer‘错误_第1张图片

在swift的桥接文件中删掉包含的第三方库以后

Duplicate interface definition for class ‘AFHTTPResponseSerializer‘错误_第2张图片

同样,注释掉’MBProgressHUD,但是提示重定义了’MBProgressHUD
Redefinition of ‘MBProgressHUDMode’
Redefinition of enumerator ‘MBProgressHUDModeIndeterminate’
后来我发现原来这种方法前提是要在swift 项目中使用.
重点来了,我使用的是oc老项目,所以我不能够打开 use_frameworks!的注释,只有swift项目才可以打开.

最终解决方法

podfile里面:删掉use_frameworks! ,或者 #注释掉 #use_frameworks!
这样编译会提示找不到 第三方框架,AFNetworking,SVProgressHUD,SVProgressHUD
Cannot find ‘SVProgressHUD’ in scope
Cannot find ‘AFNetworking’ in scope
Cannot find ‘SVProgressHUD’ in scope
然后我们在桥接文件项目名-Bridging-Header.h里面添加要在swift文件中包含的第三方库,注意,要有目录名和文件名<目录名/文件名.h>

#import
#import
//#import
#import “UserMessage.h”
#import “MJRefresh.h”
#import “QCAFNetWorking.h”
#import
#import “EditFormViewController.h”
#import
再编译,就通过了,我之前封装好的swift类库也可以使用了.

你可能感兴趣的:(swift,objective,c)