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

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

为什么会这样?我怎样才能防止这次坠机?

推荐答案

Congratulation

Xcode的新版本(11.2.1)现在可以使用,这是解决这个问题的最好方法.

Workarounds

@Mojtaba Hosseini我提出的解决方案来自StackOverflow上我的帮助和我的开发伙伴的参与.你我和在座的所有开发者睡觉都已经知道,等苹果宣布新版本,这个问题就没了.

But Beside Everything

上述解决方案完全被Apple Review接受,因为它根本不涉及私有API.此方法与创建属性非常相似,例如

@界面UITextView(布局)

UITextView+Layout.h

因此,当您创建属性时,您将直接使用Apple Private Components,并根据您的依赖或要求对它们进行重新模块化.

简单的示例是AMFNetworking类

- (void)setImageWithURL:(NSURL *)url {
    [self setImageWithURL:url placeholderImage:nil];
}

希望我对指控了结

下面的回答只是我这边的一些帮助,使开发人员能够像我们最初建议开发人员回滚Xcode那样继续开发.再次下载8 GB的Xcode是一种糟糕的做法,因为我们都知道Xcode的新版本很快就会发布.

虽然Xcode11.2.1中已经修复了这个问题,但是我为Xcode11.2提供了一个解决方案,您可以通过它摆脱这种崩溃:

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

SOLUTION

转到构建设置,搜索"DEAD_CODE_STRIPING"并将其设置为no

DEAD_CODE_STRIPPING = NO

Then

创建文件UITextView解决方法

UITextViewWorkaround.h

    #import <Foundation/Foundation.h>


    @interface UITextViewWorkaround : NSObject
    + (void)executeWorkaround; 
@end

UITextViewWorkaround.m

#import "UITextViewWorkaround.h"
#import  <objc/runtime.h>



    @implementation UITextViewWorkaround

    + (void)executeWorkaround {
        if (@available(iOS 13.2, *)) {
        }
        else {
            const char *className = "_UITextLayoutView";
            Class cls = objc_getClass(className);
            if (cls == nil) {
                cls = objc_allocateClassPair([UIView class], className, 0);
                objc_registerClassPair(cls);
    #if DEBUG
                printf("added %s dynamically\n", className);
    #endif
            }
        }
    }

    @end

在应用程序委托中执行它

#import "UITextViewWorkaround.h"

        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
            // Override point for customization after application launch.

            [UITextViewWorkaround executeWorkaround];
    return yes;
    }

编译代码,您将拥有一个正在运行的应用程序:)

Ios相关问答推荐

RxSwift:如何使用另外两个可观测对象(其中一个依赖于另一个)创建可观测对象?

拖动手势导致 sim 崩溃 Swift UI

将 URLCache 子类与 URLSession 一起使用

从 PHAssets 生成图像时,iOS 应用程序因内存问题而崩溃

如何在应用程序中显示我的小部件的快照?

过渡动画在 iOS16 中不起作用,但在 iOS15 中起作用

SwiftUI - ScrollView 不显示底部文本

如何将单个按钮传递到自定义 ConfirmationDialog

SwiftUI:添加核心数据项时更新选项卡栏徽章

-1103 错误域=NSURLErrorDomain 代码=-1103资源超过最大大小iOS 13

如何忽略touch 事件并将它们传递给另一个子视图的 UIControl 对象?

使用 convertPoint 获取父 UIView 内的相对位置

UITableView 背景 colored颜色 在 iPad 上总是白色

iOS 应用程序中的手动语言 Select (iPhone 和 iPad)

如何获取 iTunes 连接团队 ID 和团队名称?

iOS 7 半透明模态视图控制器

Select 器touchesBegan:withEvent:的覆盖方法具有不兼容的类型(NSSet,UIEvent)->()

在 UITableViewController 中使用 UISearchDisplayController 时断言失败

如何为 iOS 13 的 SF Symbols 设置权重?

在 NSUserDefaults 中保存图像?