如何在 objective c 项目中使用 swift pod 而无需在 pod 类 中手动编写 @objc?
how to use a swift pod in objective c project without manually writing @objc in pod classes?
在我的 objc 项目中,我需要使用一个 swift pod。为此,我需要在 swift pod 类 中添加 @objc,然后我才能在 objective c 类 中使用委托和其他属性。
我的问题是:有什么方法可以将 swift pod 用于 objective c 项目而无需在 swift pod 类 中手动添加 @objc?
提前致谢!
要回答您的问题:不,您需要在某处添加 @objc
,这是 Swift 方法可以从 Objective-C.
由于需要一个地方让 Swift 方法可用于您的 ObjC 代码,您基本上有两个选择:
a) 根据您对该 pod 的广泛使用,您可以在 pod 周围编写一个小的 Swift 包装器,您可以在其中进行必要的调用并通过 @objc 公开您的包装器方法.
b) 或者,我建议分叉 pod,进行互操作性更改,并在 PR 中将您的更改提供给上游。
为了说明 a),假设您的广告连播具有以下内容:
class PodClass {
func podMethod() -> Int {
// ...
return 42
}
}
要让 Objective-C 可以使用它,您可以实施
class PodWrapper: NSObject {
private let podc = PodClass()
@objc func podMethod() -> Int {
return podc.podMethod()
}
}
然后在Objective-C中做
#import "YOURAPPNAME-Swift.h"
-(void) foo {
PodWrapper* p = [PodWrapper new];
NSInteger x = [p podMethod];
}
在我的 objc 项目中,我需要使用一个 swift pod。为此,我需要在 swift pod 类 中添加 @objc,然后我才能在 objective c 类 中使用委托和其他属性。 我的问题是:有什么方法可以将 swift pod 用于 objective c 项目而无需在 swift pod 类 中手动添加 @objc? 提前致谢!
要回答您的问题:不,您需要在某处添加 @objc
,这是 Swift 方法可以从 Objective-C.
由于需要一个地方让 Swift 方法可用于您的 ObjC 代码,您基本上有两个选择:
a) 根据您对该 pod 的广泛使用,您可以在 pod 周围编写一个小的 Swift 包装器,您可以在其中进行必要的调用并通过 @objc 公开您的包装器方法.
b) 或者,我建议分叉 pod,进行互操作性更改,并在 PR 中将您的更改提供给上游。
为了说明 a),假设您的广告连播具有以下内容:
class PodClass {
func podMethod() -> Int {
// ...
return 42
}
}
要让 Objective-C 可以使用它,您可以实施
class PodWrapper: NSObject {
private let podc = PodClass()
@objc func podMethod() -> Int {
return podc.podMethod()
}
}
然后在Objective-C中做
#import "YOURAPPNAME-Swift.h"
-(void) foo {
PodWrapper* p = [PodWrapper new];
NSInteger x = [p podMethod];
}