おめでとう
Xcodeの新しいバージョン(11.2.1)が利用可能になりました。これは、この問題を回避するための最良の方法です。
回避策
@Mojtaba Hosseini私が提案した解決策は、StackOverflowを介した私の側から私の開発者への支援と参加によるものでした。あなた、私、そしてここにいる開発者全員は、新しいバージョンがAppleによって発表されたときに、この問題がなくなることをすでに知っています。
しかし、すべての横に
前述の解決策は、プライベートレビューがまったく含まれていないため、Apple Reviewによって確実に受け入れられました。このアプローチは、次のようなプロパティの作成と非常に似ています。
@interface UITextView(レイアウト)
または
UITextView + Layout.h
したがって、プロパティを作成するときは、APPLEプライベートコンポーネントを直接使用し、必要に応じてそれらを再調整します。
簡単な例はAMFNetworkingクラスです
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
申し立てが完了したと思います
以下の答えは、開発者がXcodeをロールバックすることを最初に提案したときに開発者が開発を継続できるようにするための私の側からのほんの一部の助けでした。XGBの新しいバージョンがまもなくリリースされることは誰もが知っているので、これは8 GB Xcodeを再度ダウンロードするのは悪い習慣でした。
これはXcode 11.2.1で修正されていますが、このクラッシュを回避できるXcode 11.2の解決策が1つあります。
***キャッチされない例外 'NSInvalidUnarchiveOperationException'によりアプリを終了します、理由: '_UITextLayoutViewという名前のクラスが見つからなかったため、_UITextLayoutViewという名前のクラスをインスタンス化できませんでした。クラスをソースコードで定義するか、ライブラリからリンクする必要があります(クラスが正しいターゲットの一部であることを確認してください) '
解決
「DEAD_CODE_STRIPPING」のビルド設定検索に移動し、NOに設定します
DEAD_CODE_STRIPPING = NO
その後
ファイルの作成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
アプリデリゲートで実行する
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
コードをコンパイルすると、実行中のアプリができます:)