2009-07-22 13 views
5

मैं UIScrollView पर कई UIViews लोड कर रहा हूं और यह ट्रैक करने की कोशिश कर रहा हूं कि वे इतनी मेमोरी का उपयोग क्यों कर रहे हैं। इंस्ट्रूमेंट्स का उपयोग करके उन्मूलन की प्रक्रिया के बाद मैंने पाया है कि दृश्यों के पृष्ठभूमि रंग को सेट करने से स्मृति उपयोग 4 गुना बढ़ जाता है।UIView के बढ़ते मेमोरी उपयोग का पृष्ठभूमि रंग सेट करना

यदि मैं पृष्ठभूमि रंग सेट नहीं करता हूं तो स्मृति उपयोग लगभग 4.5megs पर बैठता है। जैसे ही मैंने बैकग्राउंड रंग को कुछ भी लाल रंग या साफ़ किया है, मेमोरी उपयोग को 17megs तक कूदता है।

यहाँ कोड है:

ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)]; 
thumbView.tag = aCounter; 
thumbView.backgroundColor = [UIColor clearColor]; 

किसी को भी यह क्या कारण हो सकता है पता है?

पृष्ठभूमि के स्पष्ट होने के बाद मैं वास्तव में क्या कर रहा हूं। यदि इसके चारों ओर कोई रास्ता नहीं है, तो क्या UIView की पृष्ठभूमि को स्पष्ट करने के लिए एक और तरीका है?

+0

मेरे पास एक ही समस्या है। अगर मैं स्पष्ट पृष्ठभूमि रंग सेट नहीं करता हूं तो विचार काले रंग की पृष्ठभूमि के साथ दिखाई देते हैं। आपका समाधान क्या था? –

उत्तर

12

UIView (और उससे प्राप्त कक्षाओं) के सभी उदाहरणों में एक संबंधित कैलायर ऑब्जेक्ट (परत गुण के माध्यम से उपयोग किया गया) है जो UIView की दृश्य उपस्थिति प्रदान करता है। कैलियर के पास इसका स्वयं का बिटमैप हो सकता है, यह किसी अन्य कैलियर ऑब्जेक्ट के साथ बिटमैप साझा कर सकता है (जो कि प्रतिबिंब कैसे किया जाता है), या इसमें कोई बिटमैप नहीं हो सकता है।

जब कोई UIView अन्य नियंत्रणों के लिए कंटेनर के रूप में कार्य करता है, तो इसमें इसकी परत से कोई बिटमैप नहीं होता है, इस प्रकार यह बहुत कम स्मृति का उपयोग करता है। जैसे ही आप इसे पृष्ठभूमि रंग सेट करते हैं, उस बैकिंग बिटमैप को बनाया जाना चाहिए ताकि प्रस्तुत करने के लिए कुछ हो। यदि UIView उपclass कुछ ग्राफिक्स को देखने में आकर्षित करने के लिए drawRect लागू करता है, वही बात होगी।

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

+0

यह उत्तर मुझे बहुत मदद करता है, मैं बहुत बड़े UIView (कंटेनर के रूप में उपयोग किया जाता है) के स्मृति उपयोग के बारे में चिंतित हूं। – ideawu