从Xcode 11.1升级到Xcode 11.2后,我的应用崩溃了:

***由于未捕获异常'NSInvalidUnarchiveOperationException'而终止应用程序,原因:'无法实例化名为_UITextLayoutView的类,因为没有找到名为_UITextLayoutView的类;类需要在源代码中定义或从库中链接(确保类是正确目标的一部分)'

为什么会这样?我怎样才能防止这种崩溃?


当前回答

更新的解决方案: 更新到Xcode 11.2.1。对我来说,它可以在iOS 11、12或13设备上运行。

参考苹果的文档 此更新修复了一个可能导致使用UITextView的应用程序崩溃的关键问题。

旧的解决方案: 从https://developer.apple.com/download/more/下载Xcode 11.1 从11.2切换回11.1修复了崩溃。

而且,对我来说,即使我使用的是Xcode 11.2,当我将iPhone升级到13.2时,崩溃问题也得到了解决。

其他回答

改进@garafajon的回答。对我来说,这在大多数情况下都是可行的。

///Substitute class for _UITextLayoutView bug
class FixedTextView: UITextView {
    required init?(coder: NSCoder) {
        if #available(iOS 13.2, *) {
            super.init(coder: coder)
        }
        else {
            super.init(frame: .zero, textContainer: nil)
            self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            self.contentMode = .scaleToFill

            self.isScrollEnabled = false   // causes expanding height

            // Auto Layout
            self.translatesAutoresizingMaskIntoConstraints = false
            self.font = UIFont(name: "HelveticaNeue", size: 18)
        }
    }
}

1. 问题:

Xcode 11.2有一个问题,其中包含UITextView的storyboard如果用Xcode 11.2编译,会导致应用在iOS 13.2之前的操作系统版本上崩溃。

检查这个苹果文档。

2. 解决方案:

唯一的解决方案是将Xcode更新到11.2.1或11.3。

Xcode 11.2.1是专门解决这个崩溃问题的。

检查这个苹果文档。

3.建议:

我建议你使用最新版本的Xcode 11.3,因为它支持为iOS 13.3开发应用程序,而且有很多新功能。 检查这个苹果文档。

更新的解决方案: 更新到Xcode 11.2.1。对我来说,它可以在iOS 11、12或13设备上运行。

参考苹果的文档 此更新修复了一个可能导致使用UITextView的应用程序崩溃的关键问题。

旧的解决方案: 从https://developer.apple.com/download/more/下载Xcode 11.1 从11.2切换回11.1修复了崩溃。

而且,对我来说,即使我使用的是Xcode 11.2,当我将iPhone升级到13.2时,崩溃问题也得到了解决。

你可以从苹果开发者网站下载最新的Xcode测试版(11.2.1 GM)。

这里是直接链接

11.2.1转基因种子解决了这个问题

(它可以用来发布到App Store)

登录https://developer.apple.com/download/。下载Xcode 11.2.1转基因种子

发布说明确认它修复了此错误: