2016-06-28 2 views
2

私はObjective-Cメソッドを持っています。Swiftの@protocol型を渡す

このメソッドをSwiftで呼び出す方法を教えてください。

例:私はブリッジでスウィフトでのMyClassを使用したい場合は

// 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)]; 

。 Objective-Cで定義されたプロトコルをproxyWithProtocolメソッドに渡すにはどうすればよいですか。 Swiftで定義されたプロトコルをこのメソッドに渡すことはできますか?

+0

Look [here](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html)(Objective-CからSwiftを使用) – 123FLO321

答えて

2

あなたはとてもようにObjective-Cのプロトコルを渡します

MyClass.proxyWithProtocol(AProtocol) 

あなたはスウィフトプロトコルに渡したい場合は、Objective-Cのにそのプロトコルを公開する必要があります:

@objc protocol MyProtocol { 
    func someGreatFunc() 
} 

// ... 

MyClass.proxyWithProtocol(MyProtocol) 
スウィフト3では

、クラスはスウィフトにブリッジされている方法に応じて、あなたの関数は次のようになります。

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

コンパイラは "with"の位置に満足していませんが、文句を言うかもしれません。

+0

Swift 3.0では、私は合格できませんAProtocolを直接。プロトコルを使用する必要があります!(AProtocol) – wqyfavor

+1

@wqyfavorあなたはあなたの質問でSwift 3を使用していたと指定していませんでした。 – JAL

+0

「AProtocol.self」と「MyProtocol.self」もOKです – wqyfavor

関連する問題