बधाई
Xcode का नया संस्करण (11.2.1) अब उपलब्ध है जो इस मुद्दे से छुटकारा पाने का सबसे अच्छा तरीका है।
समाधान
@Mojtaba होसैनी ने मेरे द्वारा प्रस्तावित समाधान मदद और स्टैकऑवरफ्लो पर मेरे साथी डेवलपर्स से मेरी ओर से भागीदारी थी। आप, मैं और बाकी सभी डेवलपर यहां पहले से ही जानते हैं कि जब Apple द्वारा नए संस्करण की घोषणा की जाती है, तो यह समस्या दूर हो जाएगी।
लेकिन इसके अलावा सब कुछ
समाधान की समीक्षा निश्चित रूप से Apple समीक्षा द्वारा स्वीकार की गई थी क्योंकि इसमें कोई निजी API शामिल नहीं है। यह दृष्टिकोण बनाने वाली संपत्ति के समान है
@interface UITextView (लेआउट)
या
UITextView + Layout.h
इसलिए जब आप संपत्ति का निर्माण कर रहे हैं तो आप सीधे तौर पर APPLE प्राइवेट कंपोनेंट्स का उपयोग कर रहे हैं और आपके द्वारा निर्भर या आवश्यकता के अनुसार उन्हें पुन: संशोधित कर रहे हैं।
सरल उदाहरण AMFNetworking कक्षाएं है
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
आशा है कि मैं आरोप के साथ कर रहा हूँ
नीचे दिए गए जवाब में मेरी तरफ से कुछ मदद मिली थी ताकि डेवलपर को विकास जारी रखने में सक्षम बनाया जा सके क्योंकि हमने शुरुआत में डेवलपर को Xcode वापस करने का प्रस्ताव दिया था। 8 जीबी Xcode को फिर से डाउनलोड करने के लिए यह एक बुरा अभ्यास था क्योंकि हम सभी जानते हैं कि Xcode का नया संस्करण जल्द ही जारी किया जाएगा।
हालांकि यह Xcode 11.2.1 में तय किया गया है, मुझे Xcode 11.2 के लिए एक समाधान मिला है जिसके द्वारा आप इस दुर्घटना से छुटकारा पा सकते हैं:
*** बिना किसी अपवाद के N NSInvalidUnarchiveOperationException ’अपवाद के कारण समाप्ति एप्लिकेशन, कारण: U _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;
}
कोड संकलित करें और आपके पास एक रनिंग ऐप होगा :)