5

obj-c では、どのように呼び出すことができますか

[myClass myString];

どこmyString = @"myMethod";

どれと同等であるべきか[myClass myMethod];

この種のメタ言語操作が可能かどうかはわかりません。

4

5 に答える 5

9
[myClass performSelector: NSSelectorFromString(myString)];

ドキュメント:

于 2011-06-07T10:13:04.587 に答える
1

を使用できますNSSelectorFromString。次の行に沿ったものが機能するはずです。

 SEL selector = NSSelectorFromString(@"myMethod");
 [myClass performSelector:selector withObject:nil];
于 2011-06-07T10:14:15.767 に答える
1

[myClass class]メタクラスを返し、メタクラスでクラス メソッドが呼び出されます。例えば

[NSString someClassMethod];

NSString *instanceOfString = @"some string instance";
[[instanceOfString class] someClassMethod];

編集:質問を読み違えました。NSSelectorFromStringNSString から SEL を取得するために使用します。これについては、Apple のFoundation Functions ReferenceNSClassFromStringに記載されており、 、NSStringFromClassNSStringFromSelectorNSStringFromProtocolおよびNSProtocolFromStringその他も表示されます。

于 2011-06-07T10:11:31.870 に答える
0
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];
于 2011-06-07T10:15:33.987 に答える
0

performSelector:または、友人が提供するよりも引数や戻り値の型に柔軟性が必要な場合は、 NSInvocationクラスを見てください。

于 2011-06-07T11:22:23.940 に答える