1

次の要件があります。

  1. NSButton使用に関連するアクションを取得する: - (SEL)action
  2. 取得したアクションを呼び出します。

2点目はできますか?通常、このようなアクションを呼び出します[self abc:nil]。2番目のポイントから取得したメソッドを呼び出すことができるかどうかを考えます。同じように!

4

2 に答える 2

2

試す:

SEL actionSelector = [button action];
[self performSelector: actionSelector withObject:nil];
于 2010-09-10T10:26:50.150 に答える
1

アクションは単なるセレクター (メソッドの名前) です。その名前のメソッドを持つオブジェクトの数に制限はありません。メソッドを実装するクラスが 1 つだけの場合でも、そのクラスのインスタンスの数に制限はありません。したがって、メソッドの名前だけを呼び出すことはできません。これは、どのオブジェクトがそれに応答するかを表していないためです。そのメソッドを実装するオブジェクトが必要であり、そのメッセージをその名前でそのオブジェクトに送信する必要があります。

アクション メッセージを送信する可能性が最も高いオブジェクトはボタンのターゲットなので、アクションを取得したのと同じ方法でそれを取得し、メッセージをそのオブジェクトに送信します。または、さらに良いのは、ボタンperformClick:メッセージを送信することです。ボタンをクリックするユーザーをシミュレートしたい場合は、それがその方法です。

于 2010-09-10T15:47:37.147 に答える