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
がコンパイルされたコードに存在しない可能性があるため、私のケースでは動作しません。