在Objective-C中,当您将类的名称作为字符串时,有没有办法获取一个类并向它发送消息?例如,是否有一个函数func
where func(@"NSString") == [NSString class]
?
我想知道这一点的原因是我正在为我正在研究的一种语言构建一个动态链接器库,并且我希望它具有与 Objective-C 库的接口。
在Objective-C中,当您将类的名称作为字符串时,有没有办法获取一个类并向它发送消息?例如,是否有一个函数func
where func(@"NSString") == [NSString class]
?
我想知道这一点的原因是我正在为我正在研究的一种语言构建一个动态链接器库,并且我希望它具有与 Objective-C 库的接口。
是的——实际上是两个。如果您有 Foundation 类型的框架(例如来自 Cocoa、Cocoa Touch 或 GNUstep),您可以使用该NSClassFromString()
功能,这与您的func
. 如果您不想依赖框架,则有一个类似的运行时函数 ,objc_getClass()
它接受 aconst char*
并返回命名类(或者nil
如果没有找到)。
您可以使用NSClassFromString(NSString className)
从其名称中获取类对象。
希望这可以帮助!