15

さまざまなperformSelector:...メソッドは、指定されたセレクターに渡される最大 2 つの引数を処理できます。3 つ以上の引数を渡す必要がある場合はどうすればよいですか?

4

2 に答える 2

14

そのためには NSInvocation クラスを使用する必要があります。それらの使用方法の詳細については、この SO の質問を確認してください。

于 2011-10-05T12:12:27.210 に答える
0

私は NSInvocation の方法が嫌いです。コードが多すぎます。

セレクターをすぐに実行したい場合は、シンプルでクリーンな方法を次に示します。

// Assume we have these variables
id target, SEL aSelector, id parameter1, id parameter2;

// Get the method IMP, method is a function pointer here.
id (*method)(id, SEL, id, id) = (void *)[vc methodForSelector:aSelector];

// IMP is just a C function, so we can call it directly.
id returnValue = method(vc, aSelector, parameter1, parameter2);
于 2016-10-31T09:58:57.370 に答える