【发布时间】:2015-08-07 18:35:09
【问题描述】:
有没有一种方法可以在我的 Swift 项目中使用用 Objective-C 编写的 CocoaPod?
我只做一个桥接头吗?如果是这样,我可以在 Swift 中访问 CocoaPod 中的库定义的对象、类和字段吗?
【问题讨论】:
标签: objective-c swift cocoapods
有没有一种方法可以在我的 Swift 项目中使用用 Objective-C 编写的 CocoaPod?
我只做一个桥接头吗?如果是这样,我可以在 Swift 中访问 CocoaPod 中的库定义的对象、类和字段吗?
【问题讨论】:
标签: objective-c swift cocoapods
您的问题的基本答案是肯定的,您可以使用使用 CocoaPods 构建的 Objective-c 代码。
更重要的问题是“如何使用这些库?”
这个问题的答案取决于Podfile 中的use_frameworks! 标志:
假设您想使用名称为 CoolObjectiveCLib 的 Objective-C pod。
如果你的 pod 文件使用use_frameworks! 标志:
// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'
那么你不需要添加任何桥头文件。
您需要的一切都是在 Swift 源文件中导入框架:
// MyClass.swift
import CoolObjectiveCLib
现在您可以使用 lib 中提供的所有类。
如果你的 pod 文件没有使用use_frameworks! 标志:
// Podfile
pod 'CoolObjectiveCLib'
然后你需要创建桥接头文件并在那里导入所有必要的 Objective-C 头文件:
// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"
现在您可以使用在导入的标头中定义的所有类。
【讨论】:
UIView+Toast 名称?如果不尝试使用名称与您的 pod 名称匹配的导入框架。
pod 'iOS-Echarts',则导入应如下所示: Swift 文件:import iOS_Echarts Objective-C 文件:#import <iOS_Echarts/iOS-Echarts.h>
在 podFile 中使用标志 use_frameworks!
在 Xcode 中,在依赖项的 Pod 文件夹结构中,在 Support Files 中添加 xxxxxxx-umbrella.h。
在您的{PROJECT_NAME}-Bridging-Header.h 中使用:
#import "xxxxxxx/xxxxxxx-umbrella.h"
它对我有用。
【讨论】:
你只需要一个桥接头并在那里导入你需要的东西。
【讨论】:
并且不要忘记将 Bridging Header 文件名添加到 Target -> Build Settings -> Objective-C Bridging Header
【讨论】: