【发布时间】:2011-09-09 23:00:06
【问题描述】:
在obj-c中,怎么调用
[myClass myString];
在哪里myString = @"myMethod";
应该相当于[myClass myMethod];
不确定这种元语言操作是否可行。
【问题讨论】:
标签: iphone objective-c ios nsstring meta
在obj-c中,怎么调用
[myClass myString];
在哪里myString = @"myMethod";
应该相当于[myClass myMethod];
不确定这种元语言操作是否可行。
【问题讨论】:
标签: iphone objective-c ios nsstring meta
或者,如果您在参数和/或返回类型方面需要比 performSelector: 更大的灵活性并且朋友会给您,请查看 NSInvocation 类。
【讨论】:
[myClass performSelector: NSSelectorFromString(myString)];
文档:
NSString 转换为选择器(输入 SEL)【讨论】:
[myClass class] 返回元类,在元类上调用类方法。例如
[NSString someClassMethod];
NSString *instanceOfString = @"some string instance";
[[instanceOfString class] someClassMethod];
编辑:我误读了这个问题。使用 NSSelectorFromString 从 NSString 获取 SEL。这记录在 Apple 的 Foundation Functions Reference 中,您还会在其中看到 NSClassFromString、NSStringFromClass、NSStringFromSelector、NSStringFromProtocol 和 NSProtocolFromString 等。
【讨论】:
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];
【讨论】:
您可以使用NSSelectorFromString,类似以下内容应该可以:
SEL selector = NSSelectorFromString(@"myMethod");
[myClass performSelector:selector withObject:nil];
【讨论】: