2011-02-18 6 views
6

मैं जानना चाहता हूं, आलसी लोडिंग के लिए सबसे अच्छा तरीका क्या है। मेरे लिए, अधिकांश अनुप्रयोगों में मैंने पार्सिंग का उपयोग किया है और सर्वर से यूआरएल प्राप्त किया है और छवि को तालिका दृश्य में डाल दिया है। तो मैंने आवेदन के प्रदर्शन में सुधार के लिए आलसी लोडिंग लागू की है। अब मैं आलसी लोडिंग छवियों के लिए सबसे अच्छी विधि जानना चाहता हूं। क्योंकि मैं चार तरीके में आलसी लोड हो रहा है का इस्तेमाल किया है,आईफोन में आलसी लोडिंग छवियों के लिए सबसे अच्छा तरीका क्या है?

  • एप्पल developer.com से लेज़ी चित्र लोड

  • आलसी लोड हो रहा है

  • में सुधार के लिए

    लागू अतुल्यकालिक विधि से निपटने के लिए अलग मुख्य थ्रेड प्रयुक्त डाउनलोड छवि।

  • आलसी लोडिंग के लिए ECOImageLoadingDemo एप्लिकेशन का उपयोग किया है।

लेकिन मैं ऊपर चार विधियों का इस्तेमाल किया है आलसी लोड हो रहा है प्राप्त करने के लिए। लेकिन मैं जानना चाहता हूं आलसी लोडिंग के लिए सबसे अच्छी विधि क्या है। प्रदर्शन के लिए कौन सा सबसे अच्छा है और मेमोरी वार इसके लिए उपयुक्त है?

अग्रिम में धन्यवाद।

सादर,

Pugal

उत्तर

4

मेरे अनुभव से के लिए KVO, प्रदर्शन-वार और मेमोरी-वार समाधान एक स्लाइडर के विपरीत सिरों पर हैं। आप इन दोनों के बीच कहीं अपने समाधान के साथ चारों ओर स्थानांतरित कर सकते हैं, लेकिन नुकसान के साथ सबसे अच्छा समाधान प्रदर्शन के रूप में, आमतौर पर एक खराब समाधान स्मृति-वार और इसके विपरीत है। मुझे आशा है कि मैं यह स्पष्ट करने के लिए पर्याप्त विस्तार से बताया :)

यहाँ कैसे मैं आलसी लोड हो रहा है छवियों की समस्या को संभालने है:

अपने आवेदन में मैं एक इकाई जो मैं GlobalImageProvider बुलाया बनाया। छवियों के लिए सभी अनुरोध इस इकाई के माध्यम से जाते हैं। इस तरह से मेरा नियंत्रण है कि मैं कितने धागे डाउनलोड करने के लिए उपयोग करता हूं और मैं एक कैशिंग सिस्टम (मेमोरी + स्थानीय डिस्क) को कार्यान्वित कर सकता हूं, ये सभी एप्लिकेशन के लिए पूरी तरह से पारदर्शी और पूर्ण नियंत्रण के साथ। कैश के आकार को नियंत्रित करके, मैं नियंत्रित कर सकता हूं कि एप्लिकेशन कितनी तेज़ी से महसूस करता है। प्रदर्शन के अनुसार, UIImage पहले से ही मेमोरी में बनाए गए कुछ भी तुलना नहीं करता है। मेमोरी-वार, आप कैश को अक्षम करने का भी चयन कर सकते हैं।

और भी, मैं नेटवर्क की गुणवत्ता के आधार पर एप्लिकेशन चल रहा है, जबकि मैं गतिशील रूप से धागे की संख्या भी बदल सकता हूं।

ऑनलाइन अनुरोध करने के लिए, मैं NSURLConnection का उपयोग कर रहा हूं लेकिन मैं कुछ और स्विच करने की योजना बना रहा हूं क्योंकि मैंने पढ़ा है कि यह स्मृति को रिसाव करता है।


दृश्य & नियंत्रकों पक्ष पर, मैं एक AsyncImageView जो सिर्फ एक UIImageView जानता है कि कैसे GlobalImageProvider साथ काम करने के है। यह लोड होने के दौरान एक गतिविधि संकेतक को प्रदर्शित करना जानता है और GlobalImageProvider से प्रतिक्रिया को संभाल सकता है।
यदि आप अपनी इच्छित छवि का यूआरएल जानते हैं, तो आपको बस अपनी स्क्रीन पर AsyncImageView जोड़ना होगा और GlobalImageProvider पर AsyncImageView के साथ उस छवि के लिए "हैंडलर" के रूप में अनुरोध करें।

यदि आप छवि दृश्यों के साथ डेटा मिश्रण करना पसंद नहीं करते हैं, तो आप GlobalImageProvider और AsyncImageView के बीच एक व्यू कंट्रोलर जोड़ सकते हैं। वह छवि प्रतिक्रिया प्राप्त करता है और इसे ImageView में रखता है।

यह इसके बारे में है, उम्मीद है कि यह आपको थोड़ा सा मदद करेगा।

संबंधित मुद्दे