Chúc mừng
Phiên bản mới của Xcode (11.2.1) hiện đã có sẵn, đây là cách tốt nhất để thoát khỏi vấn đề này.
Cách giải quyết
@Mojtaba Hosseini giải pháp tôi đề xuất là từ sự giúp đỡ và sự tham gia từ phía tôi đến các nhà phát triển đồng nghiệp của tôi trên StackOverflow. Bạn, tôi và tất cả các nhà phát triển còn lại ở đây đã biết rằng khi phiên bản mới được Apple công bố, vấn đề này sẽ không còn nữa.
Nhưng bên cạnh tất cả mọi thứ
Giải pháp đã nói ở trên chắc chắn được Apple Review chấp nhận vì không có API riêng nào liên quan. Cách tiếp cận này rất giống với thuộc tính tạo
@interface UITextView (Bố cục)
Hoặc là
UITextView + Layout.h
Vì vậy, khi bạn đang tạo tài sản, bạn đang trực tiếp sử dụng các thành phần riêng của APPLE và điều chỉnh lại chúng theo bạn tùy thuộc hoặc yêu cầu.
Ví dụ đơn giản là các lớp AMFNetworking
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Hy vọng tôi được thực hiện với Cáo buộc
Câu trả lời dưới đây chỉ là một số trợ giúp từ phía tôi để cho phép nhà phát triển tiếp tục phát triển khi ban đầu chúng tôi đề xuất nhà phát triển quay lại Xcode. Đây là một thực tế tồi tệ để tải xuống lại 8 GB Xcode vì tất cả chúng ta đều biết rằng phiên bản Xcode mới sẽ sớm được phát hành.
Trong khi nó được sửa trong Xcode 11.2.1, tôi đã có một giải pháp cho Xcode 11.2 mà bạn có thể thoát khỏi sự cố này:
*** Chấm dứt ứng dụng do ngoại lệ chưa được phát hiện 'NSInvalidUnarchiveOperationException', lý do: 'Không thể khởi tạo lớp có tên _UITextLayoutView vì không tìm thấy lớp nào có tên _UITextLayoutView; lớp cần được xác định trong mã nguồn hoặc được liên kết từ thư viện (đảm bảo lớp là một phần của mục tiêu chính xác) '
GIẢI PHÁP
Chuyển đến tìm kiếm Cài đặt bản dựng cho "DEAD_CODE_STR Picks" và đặt thành KHÔNG
DEAD_CODE_STRIPPING = NO
Sau đó
tạo tập tin 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
thực hiện nó trong đại biểu ứng dụng
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Biên dịch mã và bạn sẽ có một ứng dụng đang chạy :)