त्रुटि: iOS9 में _handleNonLaunchSpecificActions


157

मुझे iOS 9 पर निम्न त्रुटि मिल रही है:

    -[UIApplication_handleNonLaunchSpecificActions:
      forScene:
      withTransitionContext:
      completion:] unhandled action -> 
      <FBSSceneSnapshotAction: 0x150b2aef0> 
       {
            handler          = remote;
            info = <BSSettings: 0x15333f650> 
            {
                (1) = 5;
            };
        }

क्या किसी और को इस त्रुटि के बारे में पता चला है या इसका कोई मतलब है गलत क्या है?


6
अभी भी iOS9 पोस्ट बीटा रिलीज़ में है। यह समझने में अच्छा होगा कि मुद्दा क्या है और इसके निहितार्थ क्या हैं।
रोडी

11
मेरे पास एक ही मुद्दा है जब मैं अपने iPhone को लॉक करता हूं जब मेरा ऐप चल रहा होता है। iOS 9.0, XCode 7.0।
NKorotkov

5
यह एक Apple बग लगता है क्योंकि Xcode 7 के साथ बनाई गई एक नई परियोजना में भी यह सटीक समस्या है।
हॉन्गफेई

12
क्या Apple डेवलपर मंचों पर किसी भी योग्यता के बारे में कभी भी चर्चा की गई है? ऐसा लगता है कि किसी भी प्रकार की बग बंद हो जाती है "आप ऐसा क्यों करना चाहते हैं यदि Apple आपको नहीं चाहता है?" मुद्दों को हल करने की तलाश में हताशा का आखिरी पड़ाव है।
रोडी

11
प्रश्न का संदर्भ लें stackoverflow.com/questions/32658037/... - यह एक ही मुद्दे पर चर्चा करता है।
आईफोन गाय

जवाबों:


10

आपके कोड में कुछ भी गलत नहीं है। यह Apple के लिए एक लॉगिंग संदेश है, और आपको इसके बारे में एक राडार दर्ज करना चाहिए।

दो संकेत हैं जो बताते हैं कि यह संभवतः Apple का कोड है:

  1. विधि के नाम _handleNonLaunchSpecificActions:forScene:withTransitionContext:completionको रेखांकित करने वाला अंडरस्कोर यह दर्शाता है कि यह विधि उस वर्ग के लिए निजी / आंतरिक है जिसे यह घोषित किया गया है ( यह टिप्पणी देखें ।)

  2. यह अनुमान लगाना उचित है कि दो अक्षर उपसर्ग FBSSceneSnapshotActionFrontBoard के लिए शॉर्टहैंड है, जो कि " iOS 9 विश -लिस्ट: गेस्ट मोड" में रेने रिची के अनुसार, लॉन्चिंग ऐप्स से संबंधित सॉफ्टवेयर के पूरे परिवार का हिस्सा है:

IOS 8 के साथ, Apple ने अपने सिस्टम मैनेजर, स्प्रिंगबोर्ड को कई छोटे, अधिक केंद्रित घटकों में फिर से बनाया। बैकबॉर्ड के अलावा, जो पहले से ही पृष्ठभूमि कार्यों को संभालने के लिए बंद था, उन्होंने अग्रभूमि कार्यों के लिए फ्रंटबोर्ड को जोड़ा। उन्होंने लॉक स्क्रीन को सुरक्षित, एन्क्रिप्टेड शर्तों के तहत संभालने के लिए प्रीबर्ड को भी जोड़ा। [...]

मुझे पता नहीं है कि BSउपसर्ग किस BSSettingsलिए है, लेकिन इस लॉग संदेश के विश्लेषण से संकेत मिलता है कि यह आपके द्वारा किया गया कुछ भी नहीं है, और आपको लॉगिंग संदेश को पुन: उत्पन्न करने के लिए चरणों के साथ एक राडार दर्ज करना चाहिए।

यदि आप स्टैक ट्रेस को पकड़ना चाहते हैं, तो आप यहां से जुड़ी श्रेणी को लागू कर सकते हैं । कुछ का तर्क होगा कि निजी एपीआई को ओवरराइड करना एक बुरा विचार है, लेकिन इस मामले में स्टैक ट्रेस को हथियाने के लिए एक अस्थायी इंजेक्शन बहुत हानिकारक नहीं हो सकता है।

संपादित करें:

लेकिन, हम अभी भी जानना चाहते हैं कि यह कार्रवाई क्या है। इसलिए मैंने एक ब्रेकपॉइंट लगाया -[UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion]और रजिस्टर मूल्यों को छापना शुरू किया और एक वर्ग पाया, FBSceneImplजिसमें मेरे आवेदन के बारे में पूरी जानकारी थी:

स्थल

हम यह पता लगाने में सक्षम हैं कि किस निजी विधि को अगले कहा जाता है (कार्यक्रम काउंटर में संग्रहीत, रजिस्टर 15.)

कार्यक्रम गणक

मैंने FBSceneSnapshotActionलॉग में अन-हैंडल किए गए संदर्भित को खोजने की कोशिश की , लेकिन कोई पासा नहीं। फिर, मैंने UIApplication, और Overrode को उपवर्गित किया _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion। अब मैं सीधे कार्रवाई करने में सक्षम था, लेकिन फिर भी, हम नहीं जानते कि यह क्या है।

फिर, मैंने FBSceneSnapshotAction को फिर से देखा। पता चलता है कि यह एक सुपरक्लास कहा जाता है BSAction

तब मैंने RuntimeBrowser के समान एक उपकरण लिखा और BSAction के सभी उपवर्गों को देखा। यह पता चला है कि उनमें से एक सूची है:

कार्रवाई की सूची

हमारे पास दो विधि नाम (लॉग में से एक और डिवाइस पर प्रोग्राम काउंटर से) इंगित करते हैं कि इन कार्यों का उपयोग सिस्टम के चारों ओर गुजरने वाली क्रियाओं के लिए हुड के तहत किया जाता है।

कुछ कार्यों को संभवत: ऐप के प्रतिनिधि के कॉलबैक में भेज दिया जाता है, जबकि अन्य को आंतरिक रूप से नियंत्रित किया जाता है।

यहाँ क्या हो रहा है कि एक ऐसी कार्रवाई है जिसे सही तरीके से नहीं किया गया है और सिस्टम इसे नोट कर रहा है। हम इसे स्पष्ट रूप से देखने वाले नहीं थे।


क्षमा करें, लेकिन यह वास्तव में एक जवाब नहीं है; निम्नलिखित टिप्पणी के अधिक। कोड बहुत अधिक Apple की आंतरिक त्रुटि है, यह प्रश्न में नहीं है। अनुमान वास्तव में एक संकल्प नहीं है और प्रदान किया गया iOS8 स्पष्टीकरण प्रासंगिक नहीं है क्योंकि त्रुटि केवल iOS9 में दिखाई देती है (iOS8 में ऐसा नहीं होता है)।
रोडी

2
"क्या गलत है" का उत्तर यह है कि स्प्रिंगबोर्ड के अंदर की चीज़ ने स्नैपशॉट कार्रवाई नहीं की है। यही लॉगिंग संदेश कहता है। Apple के बाहर कोई और है जो आपको बता सकता है।
मोशे

तथ्य यह है कि यह लॉगिंग संदेश iOS 8 पर दिखाई नहीं दिया है, हालांकि वास्तव में प्रासंगिक नहीं है। यह एक आवारा लॉगिंग संदेश है जिसे रडार के साथ दायर किया जाना चाहिए।
मोशे

मैंने आज सुबह नोटिस किया कि किसी ने मेरे सवाल को अपडेट किया है और यह वह नहीं है जो मैंने मूल रूप से पूछा था, यही वजह है कि थोड़ा डिस्कनेक्ट होता है। यह भी नहीं पता था कि किसी प्रश्न को किसी अन्य व्यक्ति द्वारा अपडेट किया जाना संभव था।
रोडी

अपने मूल प्रश्न का उत्तर देने के लिए: कृपया कोई रडार दर्ज करने के अलावा अन्य कोई निहितार्थ नहीं हैं।
मोशे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.