场景描述:
OC项目集成Swift三方库,在引用Swift三方库的时候出现的报错。
奇怪之处在于,.m文件是可以引用的,在.h文件是不能引用,直接报上面的错(一度使我极度郁闷,更郁闷的是第二天居然不报错了),还是把自己的解决办法说一下。
下面的两个设置也试过,在我项目中不管用(可能项目中存在.mm文件,如果存在,可能的原因是您使用objective - c + +。modules不适用c++),点击项目->targets->build settings 搜索module将
1.enable modules
2.link frameworks automatically
两个设置成YES
解决办法:
由于我要把三方写在一个公共方法里面,所以我创建了OC单例,才会在一直出现上面的报错。
于是我想到了Swift单例,通过创建Swift单例,在去OC项目中引用Swift单例,从中这样解决,以下是代码:
import UIKit
import MatomoTracker
@objc
open class MatomoTrackerObj: NSObject {
static let _sharedMatomoTrackerObj = MatomoTrackerObj()
@objc open class func sharedMatomoTrackerObj() -> MatomoTrackerObj {
return _sharedMatomoTrackerObj
}
@objc open func getMatomoTracker() -> MatomoTracker {
let matomoTracker = MatomoTracker(siteId: "", baseURL: URL(string: "")!)
return matomoTracker
}
}