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

问题描述 投票:0回答:5

在obj-c中,如何调用

[myClass myString];

哪里

myString = @"myMethod";

这应该相当于

[myClass myMethod];

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

ios objective-c iphone nsstring
5个回答
10
投票
[myClass performSelector: NSSelectorFromString(myString)];

文档:


1
投票

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

[NSString someClassMethod];

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

编辑:我误读了这个问题。使用

NSSelectorFromString
从 NSString 获取 SEL。这在 Apple 的 Foundation Functions Reference 中有记录,您还可以看到
NSClassFromString
NSStringFromClass
NSStringFromSelector
NSStringFromProtocol
NSProtocolFromString
等。


1
投票

您可以使用

NSSelectorFromString
,类似于以下内容的内容应该可以工作:

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

0
投票
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];

0
投票

或者,如果您需要比

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

© www.soinside.com 2019 - 2024. All rights reserved.