2012-10-20 14 views
9

मैं एक संक्रमण को अनुकूलित कर रहा हूं जो मेरे डिवाइस पर धीमा प्रतीत होता है। मैं UITableView की पंक्ति का चयन करते समय एक UIViewController को दूसरे से दबा रहा हूं। पंक्ति चयन के बाद और नए दृश्य को धक्का देने से पहले एक ध्यान देने योग्य विराम है।viewWillAppear और viewDidAppear के बीच क्या हो सकता है?

कुछ लॉगिंग इंगित करता है कि मेरा सभी कोड पंक्ति चयन से धक्का नियंत्रक के viewWillAppear तक उचित रूप से त्वरित है। लेकिन फिर viewWillAppear और viewDidAppear के बीच का समय लगभग 0.7 सेकंड में लॉग होता है।

संक्रमण स्वयं (मुझे विश्वास है) केवल 0.3 सेकंड लेना चाहिए। शेष के लिए लेखांकन क्या हो सकता है?

मैं एक आईफोन 4 पर परीक्षण कर रहा हूं, इसलिए मुझे स्नैपएस्ट प्रदर्शन की उम्मीद नहीं है। लेकिन मुझे उसी डिवाइस पर अन्य समान ऐप्स के समान प्रदर्शन से मिलान करने में सक्षम होना चाहिए, नहीं?

+0

क्या आप कुछ कोड दिखा सकते हैं? – Peres

+0

क्या आपने अपने नियंत्रकों के लेआउटस्यूब्यूज विधि को ओवरराइड किया था? यदि हां, तो क्या आपके पास जटिल तर्क है? –

+0

@ जैकी बॉय मुझे नहीं पता कि पोस्ट करना क्या है, क्योंकि मुझे यकीन नहीं है कि दोनों के बीच क्या निष्पादित किया जा रहा है। –

उत्तर

0

संक्रमण स्वयं (मुझे विश्वास है) केवल 0.3 सेकंड लेना चाहिए। शेष के लिए लेखांकन क्या हो सकता है?

संसाधन आमतौर पर निम्न विधियों में खपत होती है: drawRect:, layoutSubviews, viewDidLoad, viewWillAppear:। इसके अलावा, एनआईबी से लोड करने में काफी समय की आवश्यकता हो सकती है।

viewWillAppear: के बाद, आईओएस दो स्क्रीन के बीच चिकनी एनीमेशन करने के लिए नए (और शायद वर्तमान) दृश्य का एक स्नैपशॉट करेगा। तो सुनिश्चित करें कि नियंत्रक विचारों के लिए ड्राइंग और लेआउट कोड पर्याप्त तेज़ है।

+0

मैंने अपना लोड व्यू टाइम किया है और देखेंडिडलोड कोड (मैं प्रोग्राम को प्रोग्रामेटिक रूप से देख रहा हूं) - क्या आप ड्राइंग और लेआउट कोड का जिक्र कर रहे हैं? –

+1

संसाधन आमतौर पर निम्न विधियों में खपत होते हैं: 'drawRect:', 'layoutSubviews',' viewDidLoad', 'viewWillAppear:'। इसके अलावा, एनआईबी से लोड करने में काफी समय की आवश्यकता हो सकती है। – Stream

+0

मैंने drawRect और layoutSubviews को नहीं बदला है। ViewDidLoad और viewWillAppear दोनों देरी से पहले पूरा हो रहा है। मेरा 0.7 सेक दृश्य के अंत के बीच है WillAppear और दृश्य के अंत DidAppear। –

1

मैं कुछ सप्ताह पहले एक ऐसी ही सवाल था, और मुझे लगता है मैं क्या मिला के बारे में एक ब्लॉग पोस्ट ने लिखा है:

http://bradbambara.wordpress.com/2014/07/31/object-life-cycle-uiviewcontroller/

टी एल; डॉ संस्करण है कि आईओएस करेंगे:

  • अपने नए दृश्य का लेआउट
  • अपने नए दृश्य में संक्रमण करें (यदि यह एनिमेटेड संक्रमण है)

... तो मेरा अनुमान है कि देरी विशेष रूप से लंबी संक्रमण के कारण हो सकती है, या यदि आप अपने लेआउट कोड में कोई प्रदर्शन-गहन काम कर रहे हैं।