Objective c 用字符串而不是对象调用工厂方法

Objective c 用字符串而不是对象调用工厂方法,objective-c,ios,Objective C,Ios,我只是想知道是否有一种方法(在Objective-C和iPad中)可以调用工厂方法,在这种方法中,我可以用字符串动态地构建对象的名称 e、 我有一个类XYZ和几个工厂方法 +(XYZ *) A; +(XYZ *) B; +(XYX *) C 我通常会这样称呼它 [XYZ A]; [XYZ B]; [XYZ C]; 但我希望能够用字符串动态调用它,例如 NSString *s; ... s = @"B"; [XYZ s]; 我希望你明白我的意思 谢谢。是的。您可以使用将

我只是想知道是否有一种方法(在Objective-C和iPad中)可以调用工厂方法,在这种方法中,我可以用字符串动态地构建对象的名称

e、 我有一个类XYZ和几个工厂方法

 +(XYZ *) A;
 +(XYZ *) B;
 +(XYX *) C
我通常会这样称呼它

 [XYZ A];
 [XYZ B];
 [XYZ C];
但我希望能够用字符串动态调用它,例如

 NSString *s; 
 ...
 s = @"B";
 [XYZ s];
我希望你明白我的意思

谢谢。是的。您可以使用将
NSString*
转换为
SEL
(与
@selector()
提供的类型相同)。然后,您可以使用及其变体将其称为

[XYZ performSelector:NSSelectorFromString(s)];

-performSelector:
对于不带参数并返回
id
void
的方法很有用。和是采用1或2个
id
类型参数的变体。如果需要更多的参数,或者需要的参数或返回值不是
id
,则可以使用来设置方法调用。请注意,
NSInvocation
是(相对)昂贵的,因此只有在没有其他方法时才应该使用它。

NSSelectorFromString()
即[XYZ NSSelectorFromString(@“B”)]对吗?@boscarol:不。请看我的答案。