2012-08-03 47 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筆記,在運行時的變量名一般都被轉換爲指針和內存地址。

相關問題