Selamat
Versi baru Xcode (11.2.1) tersedia sekarang yang merupakan cara terbaik untuk menghilangkan masalah ini.
Penanganan masalah
@Mojtaba Hosseini solusi yang saya usulkan adalah dari bantuan dan partisipasi dari pihak saya kepada sesama pengembang di atas StackOverflow. Anda, saya dan semua pengembang di sini sudah tahu bahwa ketika versi baru diumumkan oleh Apple, masalah ini akan hilang.
Tapi Di Samping Segalanya
Solusi yang disebutkan di atas sudah pasti diterima oleh Apple Review karena tidak ada API pribadi yang terlibat sama sekali. Pendekatan ini sangat mirip dengan pembuatan properti seperti
@interface UITextView (Layout)
Atau
UITextView + Layout.h
Jadi ketika Anda membuat properti, Anda langsung menggunakan Komponen Pribadi APPLE dan memodulasi ulang mereka sesuai kebutuhan atau kebutuhan Anda.
Contoh Sederhana adalah kelas AMFNetworking
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Semoga saya selesai dengan Tuduhan
Jawaban di bawah ini hanya bantuan dari pihak saya untuk memungkinkan pengembang untuk terus berkembang seperti Anda awalnya kami mengusulkan pengembang untuk memutar kembali Xcode. Ini adalah praktik yang buruk untuk mengunduh 8 GB Xcode lagi karena kita semua tahu bahwa versi baru Xcode akan segera dirilis.
Sementara itu diperbaiki di Xcode 11.2.1, saya punya satu solusi untuk Xcode 11.2 dimana Anda dapat menyingkirkan crash ini:
*** Mengakhiri aplikasi karena pengecualian 'NSInvalidUnarchiveOperationException' tanpa alasan, alasan: 'Tidak dapat membuat instance kelas bernama _UITextLayoutView karena tidak ada kelas bernama _UITextLayoutView yang ditemukan; kelas perlu didefinisikan dalam kode sumber atau dihubungkan dari perpustakaan (memastikan kelas adalah bagian dari target yang benar) '
LARUTAN
Buka pencarian Pengaturan Bangun untuk "DEAD_CODE_STRIPPING" dan atur ke NO
DEAD_CODE_STRIPPING = NO
Kemudian
buat 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
jalankan di delegasi aplikasi
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Kompilasi kode dan Anda akan memiliki aplikasi yang sedang berjalan :)