[新手小记]记录Objective-C调用Swift第三方库

使用场景

找到一个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
    原文作者:hillchan31
    原文地址: https://www.jianshu.com/p/dd3912a6f97c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞