मुझे एक बहुत ही अजीब समस्या का सामना करना पड़ा है और मैं सोच रहा था, अगर कोई मेरी मदद कर सकता है क्योंकि मैं पूरी तरह से खो गया हूं।आईओएस ऑटोलायआउट प्रदर्शन समस्या। [NSISEngine ऑप्टिमाइज़]
संदर्भ: मैं अपेक्षाकृत सरल पदानुक्रम के साथ एक ऐप विकसित कर रहा हूं। बस कुछ दृश्य नियंत्रक लेकिन बहुत अधिक उच्च-रेज छवियां। उन्हें में कुछ पाठ आदि के साथ प्रस्तुत किया जाता है। पोर्ट्रेट मोड में इसका परीक्षण करते समय स्क्रॉलव्यू आसानी से स्क्रॉल नहीं करता था। ऐसा लगता है कि फ्रेमरेट लगभग 4-5 एफपीएस तक गिर गया। सबसे पहले मैंने सोचा कि यह उच्च-रेज छवियों के कारण था।
लेकिन फिर मैंने आईपैड को लैंडस्केप मोड में बदल दिया और सब कुछ सुचारू रूप से चला गया। चूंकि मेरे पास चित्र और परिदृश्य के लिए एक अलग xib-file है, इसलिए मैंने सोचा कि पोर्ट्रेट-xib में कोई समस्या होनी चाहिए। यह निकला, वहाँ नहीं था। दोनों में एक ही वीसी-क्लास था और इसलिए एक ही कोड का उपयोग करना और दोनों xibs विचारों के आकार और पदों को छोड़कर लगभग समान हैं।
समस्या को कम करने के लिए, मैंने समस्या का कारण बनने के लिए इंस्ट्रूमेंट के टाइमप्रोफाइलर का उपयोग किया। जैसा कि यह निकला, टाइमप्रोफाइलर ने [NSISEngine optimize]
पर कुछ कॉल दिखाए (NSLayoutConstraint
द्वारा ट्रिगर किया गया)। पोर्ट्रेट मोड में अधिक कॉल थे और उन कॉलों में काफी समय लगा। पेड़ के नीचे मैंने देखा कि पोर्ट्रेट मोड [NSISEngine optimize]
में [NSISEngine fixupIntegralizationViolations]
कहा जाता है और परिदृश्य में यह नहीं था।
मैंने रूटव्यूवी और एक अन्य जो रूटवीसी द्वारा प्रस्तुत किया गया है, को छोड़कर ऐप से सभी व्यू कंट्रोलर को हटा दिया। प्रस्तुत वीसी में बस कुछ छवियों, बटन और कुछ एनिमेशन शामिल हैं। यह दोनों ओरिएंटेशन के लिए केवल एक xib है और (जैसा कि अन्य सभी भी) ऑटोलायआउट के साथ बाहर रखा गया है।
लेआउट काम करता है क्योंकि यह दोनों ओरिएंटेशन में होना चाहिए और वहां कोई अस्पष्टता नहीं है (जहां तक मैं कह सकता हूं। कम से कम po [[UIWindow keyWindow] _autolayoutTrace]
कोई भी नहीं दिखाता है)।
मैंने वीसी की प्रस्तुति प्रक्रिया के टाइमप्रोफाइल का एक स्क्रीनशॉट संलग्न किया है। एक चित्र के लिए और एक परिदृश्य के लिए। जैसा कि आप देख सकते हैं, परिदृश्य में [NSISEngine optimize]
पर कॉल केवल एक मिलीसेकंड लेते हैं जबकि चित्र में वे 3000 मिमी से अधिक लेते हैं।
क्या कोई ऐसा है जो मुझे बता सकता है कि ऐसा क्यों है? या शायद यह पता है कि समस्या क्या है यह जानने के लिए मैं क्या कर सकता हूं?
किसी भी मदद की सराहना की जाएगी!
Thx
छवि का एक बड़ा संस्करण के लिए लिंक: link
अगर आप कभी भी इस बग रिपोर्ट के साथ कोई फॉलो-अप किया है तो उत्सुक है? मुझे अजीब ऑटोलायआउट देरी के साथ समान समस्याएं आ रही हैं, जिसमें इंस्ट्रूमेंट्स एनएसआईएसईएनजीईएन फिक्सअप इंटेग्रैगलाइजेशन उल्लंघन के लिए कई कॉल दिखा रहा है ... –
नहीं, दुख की बात है कि मैंने अभी तक कुछ नहीं सुना है – Tobi