Objective c 用字符串而不是对象调用工厂方法
我只是想知道是否有一种方法(在Objective-C和iPad中)可以调用工厂方法,在这种方法中,我可以用字符串动态地构建对象的名称 e、 我有一个类XYZ和几个工厂方法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]; 我希望你明白我的意思 谢谢。是的。您可以使用将
+(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:不。请看我的答案。