2016-11-16 9 views
0

SwiftとObjective Cのリフレクションを使ってメソッドを呼び出そうとしていますが、このメソッドは引数を受け取り、引数を受け入れるメソッドを参照するSelectorのインスタンスを構築する方法を考えることができません。ここでスイフトセレクタ:パラメータを持つメソッドを参照するインスタンスを作成する方法は?

は、いくつかのサンプルコードです:

class Thing : NSObject { 

    func doSomething() { 
    } 

    func doSomething(str :String) { 
    } 

} 

extension Thing { 

    func doSomethingElse(str :String) -> String { 
    } 

} 

let t = Thing() 

var selector = Selector("doSomething") 
//selector = Selector("doSomething:") 

if t.responds(to: selector) { 
    t.perform(selector) 
} 

だから私は問題なくdoSomethingを呼び出すことができますが、私はdoSomething(str :String)を参照する文字列からSelectorを作成するように見えることはできません。私は文字列 "doSomething:"(コメントアウトされた行)でそうしようとしました。

私は最終的には、拡張メソッドdoSomethingElseを呼び出そうとしています。

リフレクション/セレクタを使用して引数付きのSwiftメソッドを呼び出すにはどうすればよいですか?

P.S.私は、一般的には#selectorを使用することになっていることを認識していますが、doSomethingがコンパイルされたコードに存在しない可能性があるため、私のケースでは動作しません。

答えて

0

Objective Cでは、 "doSomething(str:String)"という署名を持つSwiftメソッドを "doSomethingElseWithStr:"と呼びます。

関連する問題