使用场景
找到一个github上的一个CircleMenu的菜单,觉得挺好想用用,发现是Swift写的,项目本身是Objective-C的,所以想试试能不能直接用OC去调用Swift。
步骤
1 根据github的说明,直接
target :test do
pod 'CircleMenu'
end
发现报错了,提示引入的这个CircleMenu是用Swift写的,只能用frameworks的方式集成
-> Using CircleMenu (1.0.7)
- Running pre install hooks
[!] Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfile or target to opt into using it. The Swift Pod being used is: CircleMenu
2 根据Podfile的报错,加入use_frameworks!
target :test do
pod 'CircleMenu'
use_frameworks!
end
提示安装完成,(≧▽≦)/
Pod installation complete!
3 直接进入代码,照着Swift的列子写一下
@interface ViewController () <CircleMenuDelegate>
直接报错,找不到CircleMenuDelegate这个协议。
4 需要引入头文件,格式为 库名-swift.h
#import "CircleMenu-swift.h"
进入这个头文件查看,应该是系统自动帮忙生成的。头文件会将Swift方法全部映射成OC的方法。
// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31)
问题
- 之前OC引入的Pods在使用use_frameworks!后,无法找到头文件
cocoapods 1.0以下版本,可以使用link_with只对指定的库使用use_frameworks!
target 'Frameworks' do
use_frameworks!
link_with 'xxxx' #xxxx为项目target
pod 'CircleMenu'
end