मैं ARC
का उपयोग कर एक आईफोन प्रोजेक्ट पर हूं। एप्लिकेशन UINavigationController
का उपयोग करके एक नेविगेशन आधारित है।एआरसी का उपयोग करते समय ऑब्जेक्ट्स को शून्य पर सेट करते समय?
सामान्य उपयोग केस "मुख्य" UIViewController
से "माध्यमिक" UIViewController
कई बार, शायद 100 गुना तक जाना है। द्वितीयक नियंत्रक में बहुत सारी स्थिर, स्थानीय पीएनजी छवियां हैं, उनमें से कुछ दोहराई गई हैं।
मैं एप्लिकेशन को प्रोफाइल कर रहा हूं और मैं देख सकता हूं कि, "मुख्य" से "माध्यमिक" नियंत्रक से कैसे जा रहा है, यह लगभग 0.8 एमबी आवंटित करता है, लेकिन, बैक बटन दबाते समय, यह स्मृति को मुक्त नहीं करता है। तो, जब मैं माध्यमिक नियंत्रक के लिए फिर से जाना है, अन्य 0.8 एमबी आवंटित किए जाते हैं, और इतने पर ...
डिबगिंग, मैंने देखा है कि माध्यमिक UIViewController
की viewDidUnload:
विधि बुलाया जा रहा है कभी नहीं है, लेकिन मैं भी पढ़ा है कि यह है कि विधि जहां मुझे नियंत्रक द्वारा रखे गए संदर्भों को शून्य करने के लिए सेट करना है। viewDidDisappear:
में ऐसा करने में मदद नहीं होती है, क्योंकि मैं चाहता हूं कि बैक बटन दबाते समय केवल तब होता है, यानी स्टैक से नियंत्रक को पॉप करते समय (viewDidDisappear:
विधि को स्टैक पर किसी अन्य नियंत्रक को दबाते समय भी कॉल किया जाएगा)।
तो प्रश्न हैं: क्या मुझे वहां ऐसा करना है? क्या मैं उस विधि को बुला सकता हूं? क्या यह व्यवहार ठीक है (प्रोफाइलिंग, आवंटन "मुख्य" -> "माध्यमिक" -> "मुख्य" -> "माध्यमिक" -> ...) के कुछ चक्रों के बाद 20 एमबी तक चला गया ??
आप सभी पहले से धन्यवाद
एआरसी मूल रूप से ऑब्जेक्ट को स्वचालित रूप से जारी करने के लिए उपयोग किया जाता है। आप एआरसी को बंद करने के साथ एक नया प्रोजेक्ट बना सकते हैं ताकि आप ऑब्जेक्ट्स मैन्युअल रूप से रिलीज़ कर सकें। –
लागू - (शून्य) didReceiveMemoryWarning। यह वह तरीका है जिसे आपका ऐप बहुत अधिक मेमोरी का उपयोग करते समय बुलाया जाता है। – MJB
आप बैक बटन व्यवहार को कैसे कार्यान्वित कर रहे हैं? क्या आप इसके लिए कोड पोस्ट कर सकते हैं? – Jim