質問

している方法により異なる単一のメソッドの呼び出しで、たいと思いパスメソッドの署名の方法によって異なりの引数として...こんなことが可能なので、Objective-Cやはぎを希望す。

役に立ちましたか?

解決

NSInvocationは、オブジェクト内のメソッド呼び出しをラップするためのクラスです。あなたは、セレクタ(メソッドのシグネチャ)を設定インデックスによって引数を設定することができます。その後、目標を設定し、呼び出しをトリガーする、または設定解除の目標を残し、invokeWithTargetを使用するために呼び出す呼び出すことができます。いくつかの並べ替えのループの中で多くのオブジェクトでこれを呼び出すために、

私はそれが少し、このようにうまくいくと思う。

NSInvocation *inv = [[NSInvocation alloc] init];
[inv setSelector:@selector(foo:bar:)];
[inv setArgument:123 atIndex:0];
[inv setArgument:456 atIndex:1];

for (MyClass *myObj in myObjects) {
  [inv invokeWithTarget:myObj];
}

それともあなたは、セレクタ(メソッドのシグネチャ)を受け入れSELタイプを使用することができます。このメソッドに呼び出しオブジェクトを渡したいいけない場合ます。

-(void)fooWithMethod:(SEL)selector;

次にのオブジェクトにそれを呼び出すために、呼び出しオブジェクトにセレクタを割り当てる。

scroll top