gpt4 book ai didi

objective-c - 使用字符串而不是对象调用工厂方法

转载 作者:行者123 更新时间:2023-11-29 11:09:42 25 4
gpt4 key购买 nike

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

例如我有一个类 XYZ 和几个工厂方法

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

我通常会这样调用它

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

但我希望能够使用字符串动态调用它,例如

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

希望你明白我的意思。

谢谢。

最佳答案

是的。您可以使用 NSSelectorFromString()NSString* 转换为 SEL(与 @selector() 提供的类型相同)。然后你可以用 -performSelector: 调用它及其变体。

[XYZ performSelector:NSSelectorFromString(s)];

-performSelector: 对于不带参数并返回 idvoid 的方法很有用。 -performSelector:withObject:-performSelector:withObject:withObject:是采用 1 或 2 个 id 类型参数的变体。如果您需要比这更多的参数,或者您需要一个不是 id 的参数或返回值,那么您可以使用 NSInvocation而是设置方法调用。请注意,NSInvocation(相对)开销很大,因此只有在别无他法时才应使用它。

关于objective-c - 使用字符串而不是对象调用工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com