首页 > 解决方案 > 为什么使用 Self.self 打印 Self

问题描述

我在自定义视图中有此代码:

class AView: UIView {
   
   func setup {
       Bundle.main.loadNibNamed("\(Self.self)", owner: self, options: nil)
   }
   
}

我预计这将加载 nib 文件名AView,它在调试模式下没有问题。但是在发布模式下运行时,这会崩溃。

错误信息是:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: '_TtC10ATPlatformP33_BB740EC0B8824C2F1932C467ED63DEF214LanguageBundle </private/var/containers/Bundle/Application/B0094397-EC2C-4550-8981-0CF2DCFB580C/xxx.app> (loaded)' with name 'Self''

这意味着"\(Self.self)" 返回Self的字符串。

我意识到当 set Swift Compiler - Code Generation-> Optimization Levelto时[-Onone],它不会崩溃。

有谁知道为什么?

标签: swift

解决方案


这是错误SR-14564"\(Self.self)"在优化 Swift 时导致 Xcode 12.5 上的问题”,它已在 Swift 5.5 中修复。您可能正在使用 Xcode 12.5,它使用 Swift 5.4。尝试更新到 Xcode 13 Beta。你可以在这里下载。


推荐阅读