1

文字列を使用してオンザフライでオブジェクトの名前を作成するファクトリ メソッドを (Objective-C および iPad で) 呼び出す方法があるかどうか疑問に思っています。

たとえば、クラス XYZ といくつかのファクトリ メソッドがあります。

 +(XYZ *) A;
 +(XYZ *) B;
 +(XYX *) C

私は通常それを次のように呼びます

 [XYZ A];
 [XYZ B];
 [XYZ C];

しかし、たとえば文字列で動的に呼び出すことができるようにしたい

 NSString *s; 
 ...
 s = @"B";
 [XYZ s];

あなたが私の主張を理解してくれることを願っています。

ありがとうございました。

4

1 に答える 1

2

はい。を使用して aNSSelectorFromString()に変換できます(これは、与えるのと同じタイプです)。これをとそのバリアントで呼び出すことができます。NSString*SEL@selector()-performSelector:

[XYZ performSelector:NSSelectorFromString(s)];

-performSelector:id引数を取らず、 orを返すメソッドに役立ちますvoid-performSelector:withObject:および-performSelector:withObject:withObject:は、1 つまたは 2 つidの型付きパラメーターを取るバリアントです。それよりも多くのパラメーターが必要な場合、または ではないパラメーターまたは戻り値が必要な場合はid、代わりに を使用NSInvocationしてメソッド呼び出しを設定できます。NSInvocation(比較的)高価なので、他に方法がない場合にのみ使用する必要があります。

于 2012-08-24T00:14:24.240 に答える