Xcode 11.1 से Xcode 11.2 में अपग्रेड करने के बाद, _UITextLayoutView के कारण ऐप क्रैश हो जाता है


351

Xcode 11.1 से Xcode 11.2 में अपग्रेड करने के बाद मेरा ऐप क्रैश हो गया है:

*** बिना किसी अपवाद के N NSInvalidUnarchiveOperationException ’अपवाद के कारण समाप्ति एप्लिकेशन, कारण: U _UITextLayoutView नामक वर्ग को तत्काल नहीं कर सका क्योंकि _UITextLayoutView नाम का कोई वर्ग नहीं मिला; कक्षा को स्रोत कोड में परिभाषित किया जाना चाहिए या लाइब्रेरी से जोड़ा जाना चाहिए (सुनिश्चित करें कि कक्षा सही लक्ष्य का हिस्सा है) '

ये क्यों हो रहा है? मैं इस दुर्घटना को कैसे रोक सकता हूं?


17
Xcode 11.2 बग की तरह लगता है। थ्रेड फ़ोरम की जाँच करें ।developer.apple.com/ thread/ 125287 । सबसे अधिक संभावना यह पदानुक्रम में TextViews से संबंधित है
Pavel Stepanov

3
@DanielStorm दुर्भाग्य से, इससे कोई फायदा नहीं हुआ। मैंने सिर्फ एक स्क्रीन पर एक सादा UITextView जोड़ा है, जो पहले नहीं था (और साथ ही दुर्घटना नहीं हुई :))। अब यह उसी त्रुटि के साथ क्रैश होता है। नवीनतम iOS 13.2 को छोड़कर सभी डिवाइस / सिमुलेटर के लिए समस्या बनी रहती है
Pavel Stepanov

3
किसी को पता है कि क्या यह iOS 13.1.2 उपकरणों पर चलने पर Xcode 11.2 के साथ निर्मित उत्पादन ऐप्स को क्रैश कर देगा?
gfpacheco

2
यह पूरी तरह से एक अच्छा सवाल है, इसलिए 198 वोट हैं, इसलिए मुझे वास्तव में यकीन नहीं है कि किसी ने इसे "स्पष्ट रूप से पकड़ में नहीं रखा" के रूप में चिह्नित किया
माइक वोल्मर

4
@ मायकेवॉल्मर मैंने मतदान को बंद कर दिया और अब प्रासंगिक नहीं है। यह 11.2.1 के साथ तय किया गया है। इस प्रश्न में उपयोगिता की एक बहुत छोटी खिड़की थी।
रामादेवी

जवाबों:


145

बधाई

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;
    }

कोड संकलित करें और आपके पास एक रनिंग ऐप होगा :)


2
अगर आप के लिए काम कर रहे हैं तो कृपया इस रैंक के साथ ही इस समाधान को भी आजमा सकते हैं
आफताब मुहम्मद खान

3
@Hardy_Germany मैंने इसे थोड़ा परीक्षण किया, स्विफ्ट के लिए आप कोशिश कर सकते हैं: वर्ग UITextViewWorkaround: NSObject {class func executeWorkaround () {अगर #available (iOS 13.2, *) {} और {{classITame = "_UITextLayoutView" var cls = objc_getClux पर क्लिक करें। ) अगर cls == nil {cls = objc_allocateClassPair (UIView.self, className, 0) objc_registerClassPair (Cls as! AnyClass) Aif DEBUG प्रिंट ("जोड़ा गया% @ डायनामिक रूप से \ n", className); #endif}}}}
जॉन निमिस

2
यदि आप Xcode 11.2 के साथ स्विफ्ट पैकेज प्रबंधक का उपयोग @DaveDude DEAD_CODE_STRIPPING = नहीं की जरूरत है
कोयूर

5
@pradipsutariya हां ऑफ-कोर्स क्यों नहीं हम कभी भी APPLE CLASSES में कुछ भी नहीं बदलते हैं।
आफताब मुहम्मद खान

5
केवल Xcode 11.2.1 जीएम बीज (बीटा) का विमोचन किया जाता है। स्थिर संस्करण जल्द ही जारी हो सकता है।
लाल कृष्ण

221

अपडेट: फिक्स्ड! 🎉🎊

केवल समाधान अद्यतन करना है

इस बग है तय Xcode 11.2.1 में। तो आप इसे यहाँ से डाउनलोड और उपयोग कर सकते हैं।

UITextView वाले स्टोरीबोर्ड अब ऐप को iOS 13.2, टीवीओएस 13.2 या macOS 10.15.2 की तुलना में ऑपरेटिंग सिस्टम संस्करणों पर क्रैश करने का कारण नहीं बनाएंगे। (56808566, 56873523)


5 नवंबर 2019 को Apple द्वारा Xcode 11.2 निकाला गया है

यदि आप कभी भी अपने एप्लिकेशन को जमा करने की कोशिश करते हैं जो कि Xcode 11.2 के साथ AppStore में बनता है, तो आपको अस्वीकार कर दिया जाएगा:

ऐप स्टोर कनेक्ट ऑपरेशन चेतावनी

चेतावनी देने वाला ITMS-90703 : "एक्सकोड बिल्ड का डिप्रेस्ड। आर्काइव्ड मसले को हल करने के कारण, हमने 5 नवंबर, 2019 को एक्सकोड 11.2 निकाला है। एक्सकोड 11.2.1 या नया डाउनलोड करें, अपने ऐप को फिर से बनाएं और फिर से सबमिट करें।"

तो Xcode 11.2 के साथ किए गए सभी वर्कअराउंड बेकार हैं


यह Xcode 11.2 के लिए एक बग है, और Xcode 11.2.1 में तय किया गया है।

समाधान)

पिछले Xcode रिलीज़ संस्करण से वापस रोल करें : Rollback अब कोई विकल्प नहीं है और AppStore 11.2.1 से नीचे Xcode के साथ किसी भी निर्माण को अस्वीकार कर देगा , इस पर एक नज़र डालें

https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_11.1/Xcode_11.1.xip

ध्यान दें कि आपको इसे डाउनलोड करने के लिए Safari का उपयोग करना चाहिए और आपको पहले Apple डेवलपर पोर्टल पर लॉगिन करना होगा ।

आप सभी अन्य Xcode वर्जन और अन्य रिसोर्स लिंक (रिलीज़ और बीटा वर्जन सहित) https://developer.apple.com/bownload/more पर पा सकते हैं

वर्कअराउंड

यह बहुत कठिन है, लेकिन काम करने का तरीका है। स्टोरीबोर्ड s और XibUITextView s में सभी s को शुद्ध कोड संस्करण के साथ बदलें ।


ध्यान दें कि यह बग एप्पल द्वारा पाया और तय किया गया है

फिक्स्ड

पहले भी, बग की पुष्टि एप्पल स्टाफ एडफोर्ड ने की थी

पुष्टीकरण


IOS 13.2 वाले लोगों के लिए और अब Xcode 11.1 का उपयोग नहीं कर सकते हैं:

  1. MacOS को 10.15.1 या बाद में अपडेट करें
  2. Xcode 11.2.1 या बाद में स्थापित करें
  3. यह अद्यतन डिवाइस पर अब काम किया जाना चाहिए।

स्टोरीबोर्ड वाले लोगों के लिए:

  1. उपवर्ग UITextView
  2. इसे सभी UITextViewवस्तुओं को असाइन करें
  3. किसी भी संपत्ति परिवर्तन को अद्यतन करने के लिए मत भूलना जो उपवर्ग में खो सकता है।

विधि के साथ आराम करने वालों के लिए स्विज़लिंग (ओब्जेक और गतिशील व्यवहार)

करने के लिए सिर @aftab मोहम्मद खान ऑब्जेक्टिव-सी के लिए इस सवाल का जवाब और @MikRo स्विफ्ट के लिए जवाब रूपांतरित संस्करण

बस अब और मत करो:

यहां तक ​​कि अगर ये अंतिम दो झूलते हुए वर्कअराउंड Apple निजी API का उपयोग नहीं कर रहे हैं , तो उन्हें AppStore में खारिज कर दिया जाएगा क्योंकि Apple 11.2.1 के तहत Xcode संस्करणों के साथ बिल्ड स्वीकार नहीं करेगा !

और एक बार फिर से:

5 नवंबर 2019 को Apple द्वारा Xcode 11.2 निकाला गया है


3
दुखद है, लेकिन समाधान मेरे लिए काम कर रहा है। धन्यवाद! ११.१ काम करता है। मैं शुद्ध कोड में परिवर्तित करने का सुझाव नहीं दूंगा, क्योंकि मैं शर्त लगाता हूं कि जल्द ही एक सुधार सामने आएगा। यदि आपको कोई आपत्ति नहीं है: एक नया संस्करण आने के बाद इस उत्तर को अपडेट करें। बुरा होगा अगर लोग 11.1 ईवेंट डाउनलोड करना शुरू कर दें, हालांकि वहाँ एक निश्चित संस्करण है :)
सेबस्टियन वेई

2
मेरे पास पहले से ही 11.1 है, लेकिन काम नहीं किया, मैंने 11.2 में अपग्रेड नहीं किया।
जेहेलिया

6
कृपया ध्यान दें कि आपको संभवतः अपने विकास उपकरण से ऐप को हटाना चाहिए और / या Xcode के बिल्ड फ़ोल्डर को साफ करना चाहिए ( CMD + Shift + K)
JeroenJK

3
मैं v11.2.1 में कैसे अपग्रेड कर सकता हूं? यह ऐप स्टोर पर दिखाई नहीं दे रहा है। और डेवलपर पोर्टल से जीएम बीज को डाउनलोड करने से लगभग 8 जीबी तक ऐप डाउनलोड करने की कोशिश की जाती है!
मेसकाइब

3
इसके अलावा अगर यह पदावनत किया जाता है, तो ऐप्प अभी के लिए ऐप स्टोर पर 11.2 को क्यों नहीं हटाता है?
मैल्कम सल्वाडोर

40

मुद्दा Xcode 11.2.1 में तय किया गया था।

संपादित करें: जैसा कि अब जारी किया गया है, आपको उस Xcode संस्करण पर स्विच करना चाहिए और इस वर्कअराउंड पर टिप्पणी करनी चाहिए । जैसा कि Mojtaba Hosseini ने अपने उत्तर में उल्लेख किया है:

... ये अंतिम दो झूलते हुए वर्कअराउंड Apple निजी API का उपयोग कर रहे हैं और Apple समीक्षा से अस्वीकार कर दिए जाएंगे!

जब तक Apple द्वारा फिक्स जारी नहीं किया गया था, तब तक यह विकास और परीक्षण जारी रखने के लिए एक अच्छा समाधान था।


एक्सकोड 11.2 के लिए, आफताब मुहम्मद खान के विचार पर आधारित और जॉन निमिस की मदद से मैंने निम्नलिखित कोड का परीक्षण किया।

स्टोरीबोर्ड फ़ाइलों में कोई परिवर्तन आवश्यक नहीं है!

मेरी AppDelegate.swift फ़ाइल को संपादित किया और इस वर्ग को जोड़ा

//******************************************************************
// MARK: - Workaround for the Xcode 11.2 bug
//******************************************************************
class UITextViewWorkaround: NSObject {

    // --------------------------------------------------------------------
    // MARK: Singleton
    // --------------------------------------------------------------------
    // make it a singleton
    static let unique = UITextViewWorkaround()

    // --------------------------------------------------------------------
    // MARK: executeWorkaround()
    // --------------------------------------------------------------------
    func executeWorkaround() {

        if #available(iOS 13.2, *) {

            NSLog("UITextViewWorkaround.unique.executeWorkaround(): we are on iOS 13.2+ no need for a workaround")

        } else {

            // name of the missing class stub
            let className = "_UITextLayoutView"

            // try to get the class
            var cls = objc_getClass(className)

            // check if class is available
            if cls == nil {

                // it's not available, so create a replacement and register it
                cls = objc_allocateClassPair(UIView.self, className, 0)
                objc_registerClassPair(cls as! AnyClass)

                #if DEBUG
                NSLog("UITextViewWorkaround.unique.executeWorkaround(): added \(className) dynamically")
               #endif
           }
        }
    }
}

और "didFinishLaunchingWithOptions" के लिए प्रतिनिधि कॉल के भीतर वर्कअराउंड कॉल करें

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    // Override point for customization after application launch.

    // This is the workaround for Xcode 11.2
    UITextViewWorkaround.unique.executeWorkaround()
}

34

मैंने खान की ओज-सी को स्विफ्ट करने के लिए अनुकूलित किया है :

import UIKit

@objc
class UITextViewWorkaround : NSObject {

    static func executeWorkaround() {
        if #available(iOS 13.2, *) {
        } else {
            let className = "_UITextLayoutView"
            let theClass = objc_getClass(className)
            if theClass == nil {
                let classPair: AnyClass? = objc_allocateClassPair(UIView.self, className, 0)
                objc_registerClassPair(classPair!)
            }
        }
    }

}

यह के अंत में कॉल didFinishLaunchingWithOptionsमें AppDelegate

धन्यवाद @ आफताब!


हमें इस कोड को कहाँ जोड़ना है? डेलीगेट फाइलों में?
सिद्धार्थ पीयू

@SIDHARTHPU आप में यह कॉल कर सकते हैंdidFinishLaunchingWithOptions
लालकृष्ण

इस मुद्दे पर कई प्रकार के सुधारों की कोशिश की और इसने Xcode 11.3 तक यह काम किया ?! धन्यवाद!
फ्लिमफ्लैम वीर

1
यह सबसे छोटा और शानदार उपाय है!
sVd

1
@LalKrishna UITextViewWorkaround.swift नाम की नई फ़ाइल बनाएं और इसमें ऊपर कोड जोड़ें। फिर वापसी विवरण से पहले UITextViewWorkaround.executeWorkaround () यह किया गया हैफाइनल लंचिंगविथ ऑथेंट्स।
ऐश करना

22

जल्दी ठीक करें:

///Substitute class for _UITextLayoutView bug
class FixedTextView: UITextView {
    required init?(coder: NSCoder) {
        if #available(iOS 13.2, *) {
            super.init(coder: coder)
        }
        else {
            let rect = CGRect(origin: .zero, size: CGSize(width: 100, height: 44*3))
            super.init(frame: rect, textContainer: nil)
        }
    }
}

इस कोड को कहीं जोड़ें और फिर सभी स्टोरीबोर्ड इंस्टेंस को बदलें FixedTextView

नोट: आप स्टोरीबोर्ड में बनाई गई किसी भी विशेषता को खो देंगे। इसके गंभीर प्रभाव हो सकते हैं (जैसे प्रतिनिधि सेटिंग, आकार, आदि)


यह एक वर्कअराउंड की दिशा में एक अच्छा कदम लगता है, लेकिन अभी तक कोई समाधान नहीं ...
फटी नोवी

18

अपडेटेड समाधान: Xcode 11.2.1 पर अपडेट करें । यह मेरे लिए iOS 11, 12 या 13 डिवाइस पर काम करता है।

ऐप्पल के प्रलेखन का संदर्भ लें यह अद्यतन एक महत्वपूर्ण समस्या को हल करता है जो UITextView का उपयोग करके क्रैश करने वाले ऐप्स का कारण बन सकता है।

पुराना समाधान: https://developer.apple.com/download/more/ से Xcode 11.1 डाउनलोड किया और 11.2 से 11.1 पर वापस स्विच करने पर क्रैश तय हो गया।

इसके अलावा, मेरे लिए भी Xcode 11.2 के साथ, जब मैंने अपने iPhone को 13.2 में अपग्रेड किया, तो क्रैश तय हो गया।


2
यह सबसे आसान फिक्स है - iPhone iOS को 13.2 पर अपग्रेड करें
रीफेयर करें

6
IOS को अपग्रेड करना स्पष्ट रूप से एक फिक्स नहीं है जो कि ओपी एक डेवलपर परिप्रेक्ष्य के तहत बात कर रहा है।
केव्यूक्स

2
Apple ने पुष्टि की कि बग 13.2 और Xcode 11.2 से पहले iOS संस्करणों के साथ होता है।
चक क्रूत्सिंगर

डाउनग्रेडेड XCode से संस्करण ११.१ (११ ए १०२ 5) - अभी भी एक ही दुर्घटना है (
रोममेव

यदि आप अपग्रेड या डाउनग्रेड करते हैं और यह अभी भी नीचे दिए गए Wojteck की टिप्पणी के अनुसार क्लीन Xcode के बिल्ड फोल्डर (CMD + Shift + K) को क्रैश कर देता है, जो मेरे लिए अपग्रेड पर यह तय करता है
माइक वॉल्मर

17

11.2.1 जीएम बीज इस मुद्दे को हल करता है

(और इसे ऐप स्टोर पर प्रकाशित करने के लिए इस्तेमाल किया जा सकता है)

Https://developer.apple.com/download/ पर जाएं । डाउनलोड Xcode 11.2.1 जीएम बीज

नोट जारी करने की पुष्टि करता है कि यह इस त्रुटि को ठीक करता है:

यहां छवि विवरण दर्ज करें


5
कृपया ध्यान दें कि Xcode 11.2.1 जीएम बीज स्थापित करने के बाद आपको संभवतः अपने विकास उपकरण से ऐप को हटा देना चाहिए और / या Xcode के बिल्ड फ़ोल्डर (CMD + Shift + K) को साफ़ करना चाहिए।
बजे वोजटेक डेमस्ज़िविज़

13

आप Apple डेवलपर वेबसाइट से अंतिम Xcode बीटा रिलीज़ (11.2.1 GM) डाउनलोड करने के लिए जा सकते हैं।

यहाँ सीधा लिंक है

Xcode 11.2.1 जीएम बीज


कृपया ध्यान दें कि Xcode 11.2.1 जीएम बीज स्थापित करने के बाद आपको संभवतः अपने विकास उपकरण से ऐप को हटा देना चाहिए और / या Xcode के बिल्ड फ़ोल्डर (CMD + Shift + K) को साफ़ करना चाहिए।
बजे वोजटेक डेमस्ज़िविज़

किसी अन्य प्रक्रिया के बिना स्थापित और चलाना। समस्या तय
17

मैं किस तरह इसे इन्स्टॉल करूँ ? इसने मुझे एक फ़ोल्डर दिया, लेकिन कोई भी निष्पादन योग्य नहीं है
स्कॉबी

1
बस दिए गए लिंक से ज़िप डाउनलोड करें और इसे निकालें। फिर एप्लिकेशन को एप्लिकेशन फ़ोल्डर में कॉपी करें।
बॉसओज

1
समस्या यह है कि जब मैं इसे निकालता हूं, तो मुझे दो फाइलें मिलती हैं, सामग्री और मेटाडेटा ... यही कारण है कि मैंने उनसे क्या करना है। मैंने एक संग्रह उपयोगिता का उपयोग किया क्योंकि उस पर क्लिक करना सामान्य रूप से विफल रहा था। मैं फिर से कोशिश करूँगा
नोबी

12

@Garafajon उत्तर पर सुधार। मेरे लिए यह ज्यादातर मामलों में काम करता है।

///Substitute class for _UITextLayoutView bug
class FixedTextView: UITextView {
    required init?(coder: NSCoder) {
        if #available(iOS 13.2, *) {
            super.init(coder: coder)
        }
        else {
            super.init(frame: .zero, textContainer: nil)
            self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            self.contentMode = .scaleToFill

            self.isScrollEnabled = false   // causes expanding height

            // Auto Layout
            self.translatesAutoresizingMaskIntoConstraints = false
            self.font = UIFont(name: "HelveticaNeue", size: 18)
        }
    }
}

1
अच्छी तरह से काम। @ गारफाजोन के कोड ने अप्रत्याशित स्थानों में बक्से के साथ मुद्दों का कारण बना। यह उन मुद्दों को ठीक करता है ~ महान काम!
एक्रेनज़िन

8

एक "त्वरित" फिक्स के रूप में आप UITextViewसीधे कोड से जोड़ सकते हैं और आईबी के माध्यम से नहीं। कम से कम इसने मेरे लिए काम किया। हालांकि मेरे नज़रिए से यह बेहतर है कि पिछले Xcode पर रोलबैक करें / नए का इंतज़ार करें।


6

यह Xcode 11.2 वाला बग है। सबस्क्लेस्ड टेक्स्टव्यू उन सभी डिवाइसों पर क्रैश कर रहे हैं जिनके पास नयासेट आईओएस बिल्ड (13.2) स्थापित नहीं है। आप शायद उस बिल्ड के साथ रिलीज को बेहतर नहीं बनाते हैं।

अब तुम यह कर सकते हो:

  • डाउनग्रेड Xcode 11.1 या
  • अपने डिवाइस को iOS 13.2 में अपग्रेड करें

1
तो क्या यह बग केवल उपवर्गित पाठ विचारों को प्रभावित करता है?
डैरेन

1
Xcode अपडेट करते समय iOS अपडेट करना समस्या का समाधान करता है।
बायविन ब्रायन

2
सवाल यह है, अगर दुर्घटना 13.2 से छोटे हर iOS के साथ जारी किए गए ऐप पर होगी ... मैं कोशिश करने से डरता हूं ...
mark.so.cgn

6

मैंने एक सफल वर्कअराउंड का उपयोग किया, लेकिन यह दर्दनाक था। यह वह प्रक्रिया है जिसका मैंने अनुसरण किया है:

  1. पाठ संपादक में XIB खोलें
  2. आपत्तिजनक खोजें TextView। मेरे मामले में:
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="782-j1-88c" customClass="LCAnsiConsoleTextView">
  <rect key="frame" x="16" y="20" width="343" height="589"/>
  <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
  <fontDescription key="fontDescription" name="Menlo-Regular" family="Menlo" pointSize="12"/>
  <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
  1. ध्यान दें id(मेरे मामले में id="782-j1-88c") :
  2. ऊपर दिए गए उत्तरों के अनुसार कक्षा को ओवरराइड करें और विकल्पों को फिर से बनाएँ (मेरा उद्देश्य है-सी, क्षमा करें):
@implementation FixedTextView

- (id) initWithCoder:(NSCoder*)coder
{
    if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){13,2,0}])
        self = [super initWithCoder:coder];
    else {
        self = [super initWithFrame:CGRectMake(16, 3, 343, 605)];
        self.editable = YES;
        self.selectable = YES;
        self.insetsLayoutMarginsFromSafeArea = YES;
        self.clipsToBounds = YES;
        self.clearsContextBeforeDrawing = YES;
        self.autoresizesSubviews = YES;
        self.contentMode = UIViewContentModeScaleToFill;
        self.scrollEnabled = YES;
        self.userInteractionEnabled = YES;
        self.multipleTouchEnabled = YES;
        self.translatesAutoresizingMaskIntoConstraints = NO;
        self.font = [UIFont fontWithName:@"Menlo-Regular" size:12.0];
    }
    return self;
}
  1. उन बाधाओं पर ध्यान दें, जिनमें आपका पाठ दृश्य आईडी शामिल है, और उन अवरोधों को आपके विचार या दृश्य नियंत्रक में अन्य तत्व आईडी के विरुद्ध पुन: बनाएँ। मेरे मामले में:
- (id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self xibSetup];
        [self initView];
/*
        <constraint firstItem="75C-lt-YtE" firstAttribute="top" secondItem="782-j1-88c" secondAttribute="bottom" constant="8" symbolic="YES" id="8SH-5l-FAs"/>
        <constraint firstItem="782-j1-88c" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leadingMargin" id="Mve-aZ-HCe"/>
        <constraint firstItem="782-j1-88c" firstAttribute="leading" secondItem="75C-lt-YtE" secondAttribute="leading" id="dPG-u3-cCi"/>
        <constraint firstItem="782-j1-88c" firstAttribute="trailing" secondItem="iN0-l3-epB" secondAttribute="trailingMargin" id="sjT-0Q-hNj"/>
        <constraint firstItem="782-j1-88c" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="vic-vZ-osR"/>
*/
        [self.command.topAnchor constraintEqualToAnchor:self.console.bottomAnchor constant:8].active = YES;
        [self.console.leadingAnchor constraintEqualToAnchor:self.layoutMarginsGuide.leadingAnchor].active = YES;
        [self.console.leadingAnchor constraintEqualToAnchor:self.command.leadingAnchor].active = YES;
        [self.console.trailingAnchor constraintEqualToAnchor:self.trailingAnchor].active = YES;
        [self.console.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.topAnchor].active = YES;

    }
    return self;
}

ऐसा करने से मेरे लिए वांछित कार्यक्षमता में कोई हानि नहीं हुई। सौभाग्य से मेरे पास UITextViewबदलने के लिए केवल एक ही था । अन्यथा, यह अस्थिर हो जाता है।


2

मेरे पास एक ही मुद्दा था मैंने अपने Xcode को 11.2 से 11.2.1 पर अपग्रेड किया था।

उन्नयन के बाद मैंने iOs 13 और iOS 12 पर समान परीक्षण किया है और यह ठीक काम कर रहा है।


बॉसओज़ का डुप्लिकेट उत्तर।
करूर

0

1. समस्या:

Xcode 11.2 के साथ एक समस्या है जिसमें UITextView वाले स्टोरीबोर्ड XOS 11.2 के साथ संकलित होने पर ऐप को iOS 13.2 से पहले OS संस्करणों पर क्रैश करने का कारण होगा।

Xcode 11.2

इस सेब प्रलेखन की जाँच करें ।

2. समाधान:

एकमात्र उपाय अपने Xcode को 11.2.1 या 11.3 में अपडेट करना है

Xcode 11.2.1 विशेष रूप से इस दुर्घटना मुद्दे को ठीक करने के लिए जारी किया गया था।

यहां छवि विवरण दर्ज करें इस सेब प्रलेखन की जाँच करें

3. सुझाव:

मैं आपको Xcode 11.3 के नवीनतम संस्करण के साथ जाने का सुझाव दूंगा क्योंकि यह iOS 13.3 के लिए विकासशील ऐप्स का समर्थन करता है और साथ ही कई नई सुविधाएँ भी हैं। इस सेब प्रलेखन की जाँच करें ।


-1

यह मुद्दा Xcode संस्करण 11.2.1 में तय किया गया था, और रिलीज नोट्स में कहा गया है:

यह अद्यतन एक महत्वपूर्ण समस्या को हल करता है जो UITextView का उपयोग कर क्रैश होने वाले ऐप्स का कारण बन सकता है

Xcode रिलीज नोट्स स्क्रीनशॉट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.