我有一个Objective-C方法,它将Protocol *类型作为参数。
如何在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中定义的协议传递给proxyWithProtocol方法。我甚至可以将Swift中定义的协议传递给这个方法吗?
答案 0 :(得分:2)
您可以像这样传递Objective-C协议:
MyClass.proxyWithProtocol(AProtocol)
如果您想传入Swift协议,则必须将该协议公开给Objective-C:
@objc protocol MyProtocol {
func someGreatFunc()
}
// ...
MyClass.proxyWithProtocol(MyProtocol)
在Swift 3中,根据类与Swift的桥接方式,你的函数可能如下所示:
MyClass.proxy(with: AProtocol)
MyClass.proxy(with: MyProtocol)
虽然编译器对“with”的位置不满意,但可能会抱怨。