[英]Swift Objective-C runtime class naming
我注意到在Objective-c運行時重命名了Swift類。 所以,如果我在swift中有一個名為ViewController
的類,當我執行object_getClass(self)
時,我的應用程序的名稱是TestRuntime
,我自己就是ViewController
,我會得到: _TtC11TestRuntime14ViewController
。 我注意到了這種模式或格式: _TtC$$AppName$$ClassName
, $是一個隨機數。 我無法弄清楚這些數字的來源。 如果有人能夠了解swift如何快速命名它在運行時的類,那將真正幫助我。
它們不是隨機的。 它們是以下值的長度。 這類似於常見的C ++名稱修改,並支持可能在其中包含相當任意字符的標識符,而不需要一些新的分隔符。 它還可以使它們更容易解析,尤其是在C語言中。
在這種特殊情況下,它是_TtC
然后是“十一個字符模塊名稱”然后是模塊名稱,然后是“十四個字符類名”和類名。 我假設C
是上課。 不確定Tt
(也許是“類型”)。
描述在以下3個部分中構建
功能是這里的特例。 描述還將包含有關函數簽名的一些信息。
例如,您可以擁有_TtCFCC5MyApp7MyClass10MySubClass6myFuncFS0_FT_T_L_11MySubSubClass
這將是以下代碼中MySubSubClass的描述:
class MyClass {
class MySubClass {
func myFunc() {
class MySubSubClass {
}
}
}
}
在這里,您可以找到一些示例代碼 ,將該描述解析為易於使用的屬性和數組。
更新:Demangle現在轉換為swift。 你可以在這里找到它: https : //github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.