如何从 obj-c 中的 NSString 调用类方法?

发布于 2024-11-13 19:08:01 字数 186 浏览 3 评论 0原文

在 obj-c 中,如何调用

[myClass myString];

where myString = @"myMethod";

这应该相当于 [myClass myMethod];不确定

这种元语言操作是否可行。

In obj-c, how can I call

[myClass myString];

where myString = @"myMethod";

Which should be the equivalent of [myClass myMethod];

Not sure if this kind of meta language manipulation is possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

享受孤独 2024-11-20 19:08:01
[myClass performSelector: NSSelectorFromString(myString)];

文档:

[myClass performSelector: NSSelectorFromString(myString)];

Docs:

朮生 2024-11-20 19:08:01

[myClass class] 返回元类,在元类上调用类方法。例如

[NSString someClassMethod];

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

编辑:我读错了这个问题。使用 NSSelectorFromString 从 NSString 获取 SEL。 Apple 的 Foundation Functions 中记录了这一点参考,您还会看到 NSClassFromStringNSStringFromClassNSStringFromSelectorNSStringFromProtocolNSProtocolFromString 等。

[myClass class] returns the metaclass, class methods are called on the metaclass. E.g.

[NSString someClassMethod];

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

EDIT: I misread the question. Use NSSelectorFromString to get a SEL from an NSString. That's documented in Apple's Foundation Functions Reference where you'll also see NSClassFromString, NSStringFromClass, NSStringFromSelector, NSStringFromProtocol and NSProtocolFromString amongst others.

假装不在乎 2024-11-20 19:08:01

您可以使用 NSSelectorFromString ,类似以下内容的内容应该可以工作:

 SEL selector = NSSelectorFromString(@"myMethod");
 [myClass performSelector:selector withObject:nil];

You can use NSSelectorFromString, something along the lines of the following should work:

 SEL selector = NSSelectorFromString(@"myMethod");
 [myClass performSelector:selector withObject:nil];
止于盛夏 2024-11-20 19:08:01
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];
猫七 2024-11-20 19:08:01

或者,如果您需要比 performSelector: 更灵活的参数和/或返回类型,并且朋友会给您提供更多灵活性,请查看 NSInitation 类。

Alternatively, in case you need more flexibility in argument and/or return types than performSelector: and friends will give you, have a look at the NSInvocation class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文