gpt4 book ai didi

objective-c - 在 Swift 中传递 @protocol 类型

转载 作者:可可西里 更新时间:2023-11-01 01:35:36 25 4
gpt4 key购买 nike

我有一个将 Protocol* 类型作为参数的 Objective-C 方法。

如何在 Swift 中调用此方法。

例子:

// In Objective-C

@protocol AProtocol <NSObject>
@end

@interface MyClass : NSObject
+ (id)proxyWithProtocol:(Protocol*)protocol;
@end

// I can call this method with a protocol as parameter
[MyClass proxyWithProtocol:@protocol(AProtocol)];

如果我想通过桥接在 Swift 中使用 MyClass。如何将 Objective-C 中定义的协议(protocol)传递给 proxyWithProtocol 方法。我什至可以将 Swift 中定义的协议(protocol)传递给此方法吗?

最佳答案

您将像这样传递 Objective-C 协议(protocol):

MyClass.proxyWithProtocol(AProtocol)

如果您想传入 Swift 协议(protocol),则必须将该协议(protocol)公开给 Objective-C:

@objc protocol MyProtocol {
func someGreatFunc()
}

// ...

MyClass.proxyWithProtocol(MyProtocol)

在 Swift 3 中,根据类桥接到 Swift 的方式,您的函数可能如下所示:

MyClass.proxy(with: AProtocol)
MyClass.proxy(with: MyProtocol)

尽管编译器对“with”的位置不满意并且可能会提示。

关于objective-c - 在 Swift 中传递 @protocol 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com