[英]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.