Xcode 11 Xib _UITextLayoutView crash

Crash information is as follows:

*** Terminating app due to uncaught exception 
'NSInvalidUnarchiveOperationException', 
reason: 'Could not instantiate class named _UITextLayoutView because no class named _UITextLayoutView was found; 
the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)'

 

 

A Solution

xib partial view of the switch to hard core handwriting, in order to avoid the pit.
Solution two

Download other versions of Xcode portal
solutions three

OC black magic Runtime.

    Create a file UITextViewWorkaround

    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

    Use the static method

    #import "UITextViewWorkaround.h"
     
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
     
        [UITextViewWorkaround executeWorkaround];
        return yes;
    }

    Please accept objective swift release:

    import UIKit
     
    @objc
    class UITextViewWorkaround : NSObject {
     
        static func executeWorkaround() {
            if #available(iOS 13.2, *) {
            } else {
                let className = "_UITextLayoutView"
                let theClass = objc_getClass(className)
                if theClass == nil {
                    let classPair: AnyClass? = objc_allocateClassPair(UIView.self, className, 0)
                    objc_registerClassPair(classPair!)
                }
            }
        }
     
    }

Published 49 original articles · won praise 7 · views 30000 +

Guess you like

Origin blog.csdn.net/qq_29680975/article/details/103579986