关于swift- OC混编使用Pod遇到的2个错误

错误1

Cannot find interface declaration for 'UITableViewCell', superclass of "DEFUITalbleViewCell"
Cannot find interface declaration for 'UIView', superclass of "DefUIView"

Cannot find interface declaration for '系统类', superclass of "自定义"

关联信息:我从swift定义了很多工具和基础封装,然后在OC的PCH文件中#import "{projectName}-Swift.h",从而可以在OC中使用。

诱发原因:项目中使用了一个新的依赖库,是纯swift实现的,所以podfile中需要设置use_frameworks!,依赖下载后就出现了上面的错误,好多系统类的继承类都提示找不到了。

解决办法:stack overflow中有人提到互相import可能会导致这个问题

This can happen when foo.h #imports "bar.h" and bar.h #imports "foo.h" (or sometimes its a chain of three or more header files importing each other in a circle) and it leads to spurious errors like the one you're seeing.

介于出问题的类都是swift报漏给OC的,我就想到了{projectName}-Swift.h的引用问题,最后发现把{projectName}-Swift.h写在PCH文件的最后面,然后清除编译缓存(Clean Build Folder...),重新编译就好了。

当然,这个问题没找到根本,只是临时解决了,知道的伙伴可以提醒一下真正的原因或者如何定位原因

错误2

Library not found for -lAFNetworking Linker command failed with exit code 1 (use -v to see invocation)

这里只是随便写了一个,还是其他使用pod管理的依赖

背景:项目中使用了一个新的依赖库,是纯swift实现的,所以podfile中需要设置use_frameworks!,依赖下载后就出现了上面的错误

解决:项目设置(build settings)中的Linking - General中的Other Linker Flags中有写入-lAFNetworking等其他pod库,删掉即可

问题猜测,podfile中原来没有设置use_frameworks!,所以Other Linker Flags使用-l可能就没啥问题,现在使用framework了,不匹配,报错了。

以上,希望能帮到你

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值