__TFE12CoreGraphicsVSC6CGRectCfMS0_FT1​​xSi1ySi5widthSi6heightSi_S0_是什么类型的资源?

时间:2014-11-10 20:57:50

标签: ios

我的iPhone崩溃日志(而不是我的模拟器)告诉我,我有以下问题:

Dyld Error Message:
    Symbol not found: __TFE12CoreGraphicsVSC6CGRectCfMS0_FT1xSi1ySi5widthSi6heightSi_S0_
    Referenced from: /private/var/mobile/Containers/Bundle/Application/8F97818E-F019-42E8-883C-6FB1994C24B7/Ekalipi.app/PlugIns/EkalipiKeyboard.appex/EkalipiKeyboard
    Expected in: /private/var/mobile/Containers/Bundle/Application/8F97818E-F019-42E8-883C-6FB1994C24B7/Ekalipi.app/PlugIns/EkalipiKeyboard.appex/../../Frameworks/libswiftCoreGraphics.dylib
    Dyld Version: 353.5

这是一个无法加载的Unicode符号吗?

最后一个有意义的堆栈条目是:

6   EkalipiKeyboard                 0x0010ad88 0xf5000 + 89480
7   UIKit                           0x2acbe4f0 -[_UIViewServiceViewControllerOperator __createViewController:withContextToken:fbsDisplays:appearanceSerializedRepresentations:legacyAppearance:hostAccessibilityServerPort:canShowTextServices:replyHandler:] + 1152

理解上述资源字符串的模式是什么?

非常感谢提前! 克劳斯

1 个答案:

答案 0 :(得分:2)

这是编译器为该函数生成的错误标签(CGRect初始化程序)

你可以像这样分解完整的标签(我认为)

__TFE12CoreGraphicsVSC6CGRectCfMS0_FT1xSi1ySi5widthSi6heightSi_S0_
  • _是符号的常见开头
  • _T是Swift全局符号的标记
  • F说它是一个功能
  • 我不知道E意味着什么(但看着它似乎对应ext的纠缠符号)
  • 12CoreGraphics是模块的名称(带有名称长度的前缀)
  • V标志着结构的开始
  • 我不知道SC的含义
  • 6CGRect是函数的名称(我认为它是函数)
  • 我不知道C的含义(见下文M)
  • f将此符号标记为"未发送的函数"
  • 我不知道M的含义(CfM一起似乎意味着init功能,但我不知道单个字母的意思是什么)
  • S0_是替代品。我认为它可以代替" self"传递给curry函数
  • F此处标记了函数的参数列表
  • 的开头
  • T标志着" tuple" (对于论点)
  • 1x是第一个参数的名称(前缀为名称的长度)
  • Si表示它属于Swift.Int类型
  • 1y是第二个参数的名称(前缀为名称的长度)
  • Si表示它属于Swift.Int类型
  • 5width是第三个参数的名称(前缀为名称的长度)
  • Si表示它属于Swift.Int类型
  • 6height是第四个参数的名称(前缀为名称的长度)
  • Si表示它属于Swift.Int类型
  • _标志着未经证实的函数的结论元组
  • S0_再次使用相同的替换(我认为这意味着它会返回" self")

此外,通过xcrun swift-demangle运行它会给出官方消息:

ext.CoreGraphics.C.CGRect.init (C.CGRect.Type)(x : Swift.Int, y : Swift.Int, width : Swift.Int, height : Swift.Int) -> C.CGRect


Gwynne Raskind写了一篇关于Swift Name Mangling的非常详细的文章,你可以在这里阅读更多关于这个名字的信息