2012-05-08 26 views
7

की परियोजना में स्मृति को लीक करने के तरीके को वास्तव में कैसे पता चलाना है जबकि एक्सकोड मेमोरी लीक में ऐप्स विकसित करना हो रहा है। जब मैंने विस्तारित विस्तार से उन्हें चेक किया तो वे विभिन्न विधियों को दिखा रहे हैं जो कार्यान्वित से संबंधित नहीं हैं। वास्तव में यह पता लगाने के लिए कि कौन सी वस्तु लीक हो रही है और यह स्मृति को लीक कर रही है।आईफोन

जब एआरसी सक्षम है तो हमें मेमोरी लीक का ख्याल रखना होगा या नहीं?

उत्तर

11

ARC मेमोरी लीक के साथ भी हो सकता है, यह संकलन समय के दौरान रिलीज और ऑटोरेलीज़ को बस सम्मिलित करता है।

1. आप XCode, में Build and analyze का उपयोग कर shift+command+b आपने उन समस्याओं का समाशोधन किया जाना चाहिए लीक के लिए जाँच करना चाहिए।

2. इसके बाद आप प्रोफ़ाइल विकल्प command+i का उपयोग करके उपकरणों का उपयोग शुरू कर सकते हैं। यह आपको बताएगा कि रिसाव कहां हो सकता है।

इस लिंक से आपको मदद मिलेगी भी http://soulwithmobiletechnology.blogspot.in/2011/04/how-to-check-memory-leaks-in-xcode-4.html

संपादित करें: कुछ स्क्रीनशॉट जोड़ा उम्मीद है कि यह स्पष्ट कर देना।

leaks चयन करने के बाद की रूपरेखा के दौरान call tree विकल्प चुनते हैं और नीचे के रूप में छवि में दिखाया गया बक्से hide system libraries, invert call tree और show obj-c only की जाँच करें।

नीचे दिए गए प्रतीक नाम पर डबल क्लिक करने के बाद आपको वह रेखा मिल जाएगी जहां यह लीक हो रही है। enter image description here

आपको ऐसा कुछ मिल जाएगा।

enter image description here

+1

बस एक छोटा सा बिंदु, यह आपको "बिल्कुल दिखाता है कि लीक कहां हैं", आप भाग्यशाली हो सकते हैं और आपको बता सकते हैं, लेकिन आम तौर पर यह इंगित करता है कि रिसाव ** ** हो सकता है। – Peres

+0

सब ठीक है..लेकिन जब मैंने विस्तारित विस्तार देखा तो उस दृश्य में विधियों को किसी भी प्रोजेक्ट विधियों से मेल नहीं खा रहा है –

+0

@SAHARA, क्या आपने ट्यूटोरियल के माध्यम से जाने का प्रयास किया? लाल आमतौर पर लीकिंग ऑब्जेक्ट को इंगित करता है। आप कोड को डबल क्लिक करके कोड में देख सकते हैं। – iNoob

10

हाँ, एआरसी के साथ मेमोरी लीक हैं। एआरसी एक कचरा कलेक्टर नहीं है, यह केवल आपके लिए महत्वपूर्ण स्थिति में संकलन समय, रखरखाव, रिलीज और ऑटोरेलीज़ पर सम्मिलित करता है। इसलिए हालांकि यह डेवलपर की मदद करता है, आपको अवगत होना चाहिए कि मेमोरी लीक अभी भी मौजूद है (उदाहरण के लिए सर्कुलर रेफरेंसिंग)। आप स्टेटिक विश्लेषक का उपयोग करके शुरू कर सकते हैं और यह आपको दिखाए गए किसी भी समस्या को ठीक कर सकते हैं। फिर आप उपकरण पर जा सकते हैं और लीक्स चुन सकते हैं।

+5

और, बेशक, आप अब भी गैर उद्देश्य-सी वस्तुओं (सी या सी ++) के लिए स्मृति का प्रबंधन करने के लिए है। एक और क्षेत्र एक रन लूप (एक स्पष्ट रिसाव नहीं) में दोहराने वाले टाइमर या अन्य बनाए रखने वाली वस्तुओं को अमान्य करने के लिए भूल रहा है। – borrrden

+0

@ जैकी बॉय: क्या आप मुझे बता सकते हैं कि मेमोरी लीक उदाहरण के साथ एआरसी द्वारा संभाल नहीं है। –

+0

@MadanMohan उदाहरण के लिए चक्र बनाए रखे। http://stackoverflow.com/questions/7761074/arc-blocks-and-retain-cycles – Peres