首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift目标-C运行时类命名

Swift目标-C运行时类命名
EN

Stack Overflow用户
提问于 2014-06-05 14:31:40
回答 2查看 1.4K关注 0票数 3

我注意到一个Swift类在objective运行时被重命名。所以,如果我有一个名为ViewController的类,当我执行object_getClass(self),self ViewController时,我的应用程序的名称是TestRuntime,我会得到这样的信息:_TtC11TestRuntime14ViewController。我注意到了这种模式或格式:_TtC$$AppName$$ClassName$是一个随机数。我不知道这些数字是从哪里来的。如果有人能说明它的类在运行时的名称是多么的迅速,那将对我很有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-05 14:37:03

它们不是随机的。它们是以下值的长度。这类似于常见的C++名称损坏,并且支持标识符,这些标识符中可能包含相当任意的字符,而不需要新的分隔符。它还可以使它们更易于解析,特别是在C中。

在这种情况下,首先是_TtC,然后是“一个11个字符的模块名”,然后是模块名,然后是“一个14个字符的类名”和一个类名。我认为C是类的。不确定Tt (可能是"type")。

票数 8
EN

Stack Overflow用户

发布于 2015-08-23 21:34:21

描述建立在以下3节中

  1. 描述以_Tt开头,它代表目标(bundle / app名称)
  2. 在此之后,您将有一个或多个字母,如C,P,F,代表类,协议或功能。根据嵌套顺序,这些都是相反的。
  3. 然后,您将得到一系列的数字加上一个名称,其中的数字是长度的名称。其中每一个都是描述开头指定的目标、类、协议或函数。

函数是这里的特例。该描述还将包含一些有关函数签名的信息。

例如,您可以拥有一个_TtCFCC5MyApp7MyClass10MySubClass6myFuncFS0_FT_T_L_11MySubSubClass

这将是下面代码中对MySubSubClass的描述:

代码语言:javascript
运行
复制
class MyClass {
   class MySubClass {
     func myFunc() {
       class MySubSubClass {
       }
     }
   }
}

在这里,您可以找到一些将该描述解析为易于使用的属性和数组的样本代码

更新:恶魔现在被转换为斯威夫特。你可以在这里找到它:https://github.com/mattgallagher/CwlDemangle/blob/master/CwlDemangle/CwlDemangle.swift

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24062957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档