tebrik
Bu sorundan kurtulmanın en iyi yolu olan Xcode'un yeni sürümü (11.2.1) kullanıma sunulmuştur.
Geçici Çözümler
@Mojtaba Hosseini, önerdiğim çözüm yardım ve benim tarafımdan StackOverflow üzerinden diğer geliştiricilerime katılımdı. Siz, ben ve buradaki geliştiricinin geri kalanı, yeni sürüm Apple tarafından duyurulduğunda, bu sorunun ortadan kalkacağını zaten biliyorsunuz.
Ama Her şeyin Yanında
Yukarıda belirtilen çözüm, Apple API tarafından kesinlikle kabul edilmedi çünkü hiçbir özel API dahil edilmedi. Bu yaklaşım,
@interface UITextView (Düzen)
Veya
UITextView + Layout.h
Bu nedenle, mülk oluştururken doğrudan APPLE Private Components'ı kullanıyorsunuz ve bunları bağımlı veya gereksiniminize göre yeniden değiştiriyorsunuz.
Basit Örnek AMFNetworking sınıflarıdır
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Umarım iddia ile işim biter
Aşağıdaki cevap, geliştiricinin Xcode'u geri almasını önerdiğimiz için geliştiricinin geliştirmeye devam etmesini sağlamak için benim tarafımdan sadece bazı yardımlardı. Bu, 8 GB Xcode'u tekrar indirmek için kötü bir uygulamadır, çünkü hepimiz Xcode'un yeni sürümünün yakında yayınlanacağını biliyoruz.
Xcode 11.2.1'de düzeltilmiş olsa da, Xcode 11.2 için bu çökmeden kurtulabileceğiniz bir çözüm buldum:
*** Yakalanmayan istisna 'NSInvalidUnarchiveOperationException' nedeniyle uygulama sonlandırılıyor, nedeni: '_UITextLayoutView adlı bir sınıf bulunamadığı için' _UITextLayoutView adlı sınıf somutlaştırılamadı; sınıfın kaynak kodunda tanımlanması veya bir kütüphaneden bağlanması gerekir (sınıfın doğru hedefin bir parçası olduğundan emin olun) '
ÇÖZÜM
"DEAD_CODE_STRIPPING" için Yapı Ayarı aramasına gidin ve NO olarak ayarlayın
DEAD_CODE_STRIPPING = NO
Sonra
dosya oluştur 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
uygulama temsilcisinde yürüt
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Kodu derleyin ve çalışan bir uygulamaya sahip olacaksınız :)