我的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
理解上述资源字符串的模式是什么?
非常感谢提前! 克劳斯
答案 0 :(得分:2)
这是编译器为该函数生成的错误标签(CGRect初始化程序)
你可以像这样分解完整的标签(我认为)
__TFE12CoreGraphicsVSC6CGRectCfMS0_FT1xSi1ySi5widthSi6heightSi_S0_
_
是符号的常见开头_T
是Swift全局符号的标记F
说它是一个功能E
意味着什么(但看着它似乎对应ext
的纠缠符号)12CoreGraphics
是模块的名称(带有名称长度的前缀)V
标志着结构的开始S
或C
的含义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的非常详细的文章,你可以在这里阅读更多关于这个名字的信息