如何从 obj-c 中的 NSString 调用类方法?
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
文档:
NSString
转换为选择器(类型SEL
)Docs:
NSString
into a selector (typeSEL
)[myClass class]
返回元类,在元类上调用类方法。例如编辑:我读错了这个问题。使用 NSSelectorFromString 从 NSString 获取 SEL。 Apple 的 Foundation Functions 中记录了这一点参考,您还会看到
NSClassFromString
、NSStringFromClass
、NSStringFromSelector
、NSStringFromProtocol
和NSProtocolFromString 等。
[myClass class]
returns the metaclass, class methods are called on the metaclass. E.g.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 seeNSClassFromString
,NSStringFromClass
,NSStringFromSelector
,NSStringFromProtocol
andNSProtocolFromString
amongst others.您可以使用 NSSelectorFromString ,类似以下内容的内容应该可以工作:
You can use
NSSelectorFromString
, something along the lines of the following should work:或者,如果您需要比
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.