SELfunがパラメータの場合
どうすればこの楽しみに行くことができますか?
例えば
-(id)init:(SEL)fun
{
[target fun];
}
が引数を期待しない場合fun
は、次のようにすることができます。
[target performSelector:fun];
1 つのオブジェクト引数が必要な場合は、次のようにすることができます。
[target performSelector:fun withObject:someObject];
2 つのオブジェクト引数が必要な場合は、次のようにすることができます。
[target performSelector:fun withObject:someObject withObject:anotherObject];
3 つ以上の引数が必要な場合、またはオブジェクトではない引数が必要な場合は、この回答objc_msgSend
で説明されているように、を使用する必要があります。
これには、次の 3 つの方法を使用できます。
performSelector:
:[target performSelector:fun withObject:nil];
detachNewThreadSelector
like:を使用します[NSThread detachNewThreadSelector:fun toTarget:target withObject:nil];
が、別のスレッドで動作します。NSInvocation
次のように使用します。NSInvocation *inv = [[NSInvocation alloc] init];
[inv setSelector:fun];
[inv invokeWithTarget:target];
- (id) init:(NSString*)fun{
[target NSSelectorFromNSString(fun)];
}
- (void) methodCaller{
[[MyClass alloc] init:NSStringFromSelector(@selector(method1))];
}