कहा जाता है मैंने कभी व्यक्तिगत रूप से didReceiveMemoryWarning
को व्यक्तिगत रूप से नहीं देखा है। क्या मेमोरी उपयोग की एक ज्ञात दहलीज है जहां इसे बुलाया जाता है?कब किया जाता है ReceiveMemoryWarning वास्तव में
उत्तर
सिस्टम को कम मेमोरी होने पर यह कहा जाता है, तो आपको अपने UIViewController
को शुद्ध करने की आवश्यकता है ।
आप सिम्युलेटर में एक स्मृति चेतावनी अनुकरण कर सकते हैं: Hardware > Simulate Memory Warning
और देखें कि क्या होता है।
आप iOS6 के पूर्व संस्करणों को समर्थन कर रहे हैं, तो इसके बारे में Apple's documentation से निम्नलिखित ध्यान में रखना महत्वपूर्ण है:
पहले IOS 6, जब एक कम स्मृति चेतावनी हुआ,
UIViewController
वर्ग अपने विचार पर्ज अगर यह पता था कि यह पुनः लोड हो सकता है या बाद में उन्हें फिर से बना सकता है। यदि ऐसा होता है, यह भी कि आपके विचार पदानुक्रम के साथ जुड़े रहे किसी भी वस्तुओं के स्वामित्व त्यागना, निब फ़ाइल से भरी हुई वस्तुओं सहित करने के लिए अपने कोड एक मौका देने काviewWillUnload
औरviewDidUnload
तरीकों कहता है, वस्तुओं अपनेviewDidLoad
विधि में बनाया , और रनटाइम पर आलसी ढंग से बनाई गई वस्तुओं और दृश्य पदानुक्रम में जोड़ा गया। आईओएस 6 पर, विचार कभी शुद्ध नहीं होते हैं और इन विधियों को कभी नहीं कहा जाता है। यदि आपके व्यू कंट्रोलर को मेमोरी कम होने पर विशिष्ट कार्य करने की आवश्यकता है, तो इसेdidReceiveMemoryWarning
विधि ओवरराइड करना चाहिए।
दहलीज के बारे में, मैं 12 एमबी मेमोरी से अधिक नहीं होने का प्रयास करता हूं।
नहीं। यह कहा जाता है कि स्प्रिंगबोर्ड का मानना है कि डिवाइस पर स्मृति का उपयोग करके बहुत सारे संसाधन हैं। आपके फोन पर अन्य ऐप्स कितनी सामग्री का उपयोग कर रहे हैं, इस पर निर्भर करते हुए, यह जल्दी या बाद में हो सकता है। जब आप ऐसा करेंगे तो आप कभी भी भरोसेमंद गणना या भरोसा नहीं कर सकते।
भी चेतावनी दी जानी चाहिए, क्योंकि आवंटन जैसे टूल में दी गई स्मृति आवश्यक रूप से आपके ऐप के पदचिह्न से संबंधित नहीं है, इसलिए ऐसा लगता है कि आप अधिक उपयोग नहीं कर रहे हैं, लेकिन आपको अभी भी यह चेतावनी मिल सकती है।
प्रलेखन से, जब सिस्टम निर्धारित करता है कि उपलब्ध स्मृति की मात्रा कम है तो इस विधि को बुलाया जाता है। सिस्टम कम स्मृति को निर्धारित करता है, जब आपके ऐप आवंटन आपके ऐप पर उपलब्ध स्मृति की मात्रा से अधिक हो जाते हैं तो इस विधि को कॉल किया जाता है। कृपया http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html