-2

SELfunがパラメータの場合

どうすればこの楽しみに行くことができますか?

例えば

-(id)init:(SEL)fun
{
  [target fun];
}
4

3 に答える 3

3

が引数を期待しない場合funは、次のようにすることができます。

[target performSelector:fun];

1 つのオブジェクト引数が必要な場合は、次のようにすることができます。

[target performSelector:fun withObject:someObject];

2 つのオブジェクト引数が必要な場合は、次のようにすることができます。

[target performSelector:fun withObject:someObject withObject:anotherObject];

3 つ以上の引数が必要な場合、またはオブジェクトではない引数が必要な場合は、この回答objc_msgSendで説明されているように、を使用する必要があります。

于 2012-08-17T17:37:44.950 に答える
0

これには、次の 3 つの方法を使用できます。

  1. like の使用performSelector: :[target performSelector:fun withObject:nil];
  2. detachNewThreadSelectorlike:を使用します[NSThread detachNewThreadSelector:fun toTarget:target withObject:nil];が、別のスレッドで動作します。
  3. NSInvocation次のように使用します。

NSInvocation *inv = [[NSInvocation alloc] init];
[inv setSelector:fun];
[inv invokeWithTarget:target];

于 2012-08-17T17:51:25.420 に答える
0
- (id) init:(NSString*)fun{

[target NSSelectorFromNSString(fun)];

}

- (void) methodCaller{
        [[MyClass alloc] init:NSStringFromSelector(@selector(method1))];
}
于 2012-08-17T17:46:43.277 に答える