使用場景
找到一個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