Xcode 8 में, आप डिबग उपकरण पट्टी (स्क्रीन के नीचे दिखाया गया है) में "डीबग मेमोरी ग्राफ़" बटन पर क्लिक कर सकते हैं, :
बस बाएं पैनल में ऑब्जेक्ट की पहचान करें जो आपको लगता है कि इसे हटा दिया जाना चाहिए था, और यह आपको ऑब्जेक्ट ग्राफ़ दिखाएगा (उपरोक्त मुख्य कैनवास में दिखाया गया है)। प्रश्न में वस्तु पर मजबूत संदर्भ स्थापित किए जाने के तुरंत बाद यह बहुत उपयोगी है। यहां से, आप अपने शोध को शुरू कर सकते हैं, यह तर्क दे रहे हैं कि उन मजबूत संदर्भों का समाधान क्यों नहीं किया गया था (उदाहरण के लिए यदि प्रश्न में ऑब्जेक्ट में किसी अन्य चीज़ से एक मजबूत संदर्भ है जिसे हटा दिया जाना चाहिए था, तो उस ऑब्जेक्ट के ग्राफ़ को भी देखें, और आपको मिल सकता है मुद्दा (उदाहरण के लिए मजबूत संदर्भ चक्र, दोहराव टाइमर, आदि)
नोटिस, कि सही पैनल में, मैं कॉल पेड़ देख रहा हूं।, वैसे भी
किया है, एक तो तीर पर ढेर में दिखाया गया है प्रासंगिक विधि कॉल करने के लिए क्लिक कर सकते हैं अगले: मुझे लगता है कि इस योजना सेटिंग्स में "malloc ढेर" लॉगिंग विकल्प को चालू करके मिला ऊपर पहले स्क्रीन स्नैपशॉट का सही पैनल में पता लगा, और जैसा कि आप देख सकते हैं, जहां कि मजबूत संदर्भ मूल रूप से स्थापित किया गया था:
ऊपर स्मृति नैदानिक तकनीक (और अधिक) WWDC के उत्तरार्द्ध में प्रदर्शित किया गया है 2016 Visual Debugging with Xcode।
परंपरागत उपकरण तकनीक (विशेष रूप से उपयोगी अगर एक्सकोड के पुराने संस्करणों का उपयोग कर उपयोगी है) मेरे मूल उत्तर में नीचे वर्णित है।
मैं के साथ उपकरण ' "आवंटन" उपकरण का उपयोग कर सुझाव है कि "रिकार्ड संदर्भ गिनता" सुविधा:
तब आप अपने वर्ग के लिए खोज उपकरण में एप्लिकेशन चला सकते हैं और फिर उस तुम जानते हो लीक और तीर पर क्लिक करके में विस्तार से जानकारी है:
तब आप विवरण और गहराई में जाने और सही पर "विस्तारित विवरण" पैनल का उपयोग कर स्टैक ट्रेस को देखो:
कि "विस्तारित विवरण" पैनल में, काले रंग में अपने कोड पर ध्यान केंद्रित करने के बजाय प्रणाली में कॉल ग्रे। वैसे भी, "विस्तारित विवरण" पैनल से, आप तो अपने स्रोत कोड में स्मृति समस्याओं को ट्रैक करने साधनों का उपयोग करने में, विश्लेषण कर सकते हैं, उपकरण में सही ::
अधिक जानकारी और प्रदर्शनों के लिए देखें :
मैं सुनिश्चित नहीं हूं यह एक अच्छा परीक्षण है। आपके कोड में कहीं भी हो सकता है जो अभी भी उन दिनचर्या में एक सूचक है। या स्विफ्ट कंपाइलर पर्याप्त है, अगर इसकी आवश्यकता नहीं है तो 'deinit' को कॉल करने के लिए पर्याप्त नहीं है। आपको लीक मेमोरी के लिए बेहतर परीक्षण की आवश्यकता है। – zaph