2012-08-03 61 views
1

所以我注意到你可以做NSClassFromString和NSSelectorFromString。我可以像NSClassFromString和NSSelectorFromString一样执行NSVariableFromString吗?

是否有可能做类似NSVariableFromString的事情?

+0

你想做什么? – 2012-08-03 10:48:54

+0

我实际上并没有试图做任何我只是想知道的事情。这真的可以使用NSSelectorFromString来完成吗?当你得到一个变量时,你实际上正在调用它的getter。 – Popeye 2012-08-03 10:50:53

+0

并非所有变量都具有选择器,只有属性。 – 2012-08-03 11:01:04

回答

4

目标C运行时有很多好东西供您使用。

如果你想要一个iVar,你可以用一个字符串名称调用object_getInstanceVariable。

如果你想要变量,这是一个更多的工作,他们必须全局可见的链接器。您可以为此使用CFBundleGetDataPointerForName。

请务必阅读有关运行时信息的限制和特定信息的文档以及不同平台上的可用性。

+0

'object_getInstanceVariable'“不可用:在自动引用计数模式下不可用”任何替代方法? – 2012-10-28 18:56:30

+1

@alexgray这是最新的更新。我无法找到有关更改的任何文档。但是,您仍然可以通过'class_getInstanceVariable'获取'IVar'引用。 – 2012-10-28 20:04:08

4

否。编译的应用程序不包含变量名称,除非包含调试信息并且通常不适用于发布应用程序。

1

您可以使用NSScanner琴弦但是,作为JemeryP笔记,在运行时的变量名一般都被转换为指针和内存地址。

相关问题