我注意到一个Swift类在objective运行时被重命名。所以,如果我有一个名为ViewController的类,当我执行object_getClass(self),self ViewController时,我的应用程序的名称是TestRuntime,我会得到这样的信息:_TtC11TestRuntime14ViewController。我注意到了这种模式或格式:_TtC$$AppName$$ClassName,$是一个随机数。我不知道这些数字是从哪里来的。如果有人能说明它的类在运行时的名称是多么的迅速,那将对我很有帮助。
发布于 2014-06-05 14:37:03
它们不是随机的。它们是以下值的长度。这类似于常见的C++名称损坏,并且支持标识符,这些标识符中可能包含相当任意的字符,而不需要新的分隔符。它还可以使它们更易于解析,特别是在C中。
在这种情况下,首先是_TtC,然后是“一个11个字符的模块名”,然后是模块名,然后是“一个14个字符的类名”和一个类名。我认为C是类的。不确定Tt (可能是"type")。
发布于 2015-08-23 21:34:21
描述建立在以下3节中
函数是这里的特例。该描述还将包含一些有关函数签名的信息。
例如,您可以拥有一个_TtCFCC5MyApp7MyClass10MySubClass6myFuncFS0_FT_T_L_11MySubSubClass
这将是下面代码中对MySubSubClass的描述:
class MyClass {
class MySubClass {
func myFunc() {
class MySubSubClass {
}
}
}
}在这里,您可以找到一些将该描述解析为易于使用的属性和数组的样本代码。
更新:恶魔现在被转换为斯威夫特。你可以在这里找到它:https://github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift
https://stackoverflow.com/questions/24062957
复制相似问题