आईओएस 6, viewWillUnload
और viewDidUnload
बहिष्कृत किए गए हैं और UIViewControllers अब उन दृश्यों को अनलोड नहीं करते हैं जो स्मृति चेतावनी के दौरान स्क्रीन पर दिखाई नहीं दे रहे हैं। View Controller Programming Guide का एक उदाहरण है कि इस व्यवहार को मैन्युअल रूप से पुनर्स्थापित कैसे करें।मेमोरी चेतावनी (ऐप्पल डॉक्टर दोष) में आईओएस 6 में विचारों को उतारने का सही तरीका क्या है?
अगली बार दृश्य संपत्ति एक्सेस किया जाता है, दृश्य वास्तव में पुनः लोड कर रहा है के रूप में यह था:
- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Add code to clean up any of your own resources that are no longer necessary. if ([self.view window] == nil) { // Add code to preserve data stored in the views that might be // needed later. // Add code to clean up other strong references to the view in // the view hierarchy. self.view = nil; } }
कोड नमूना नीचे निम्न टिप्पणी है:
यहाँ कोड नमूना है पहली बार।
यहां एक स्पष्ट दोष है। यदि कोई दृश्य नियंत्रक जिसने अपना दृश्य लोड नहीं किया है, तो स्मृति चेतावनी प्राप्त होती है, यह if ([self.view window] == nil)
लाइन में अपना दृश्य लोड करेगी और फिर इसे साफ़ करने और इसे फिर से रिलीज़ करने के लिए आगे बढ़ेगी। सबसे अच्छा, यह अक्षम है। सबसे खराब, यह जटिल दृश्य पदानुक्रम और सहायक डेटा लोड होने पर स्मृति की स्थिति को और खराब कर देता है। मैंने आईओएस सिम्युलेटर में इस व्यवहार की पुष्टि की।
मैं निश्चित रूप से इस पर कोड कर सकता हूं लेकिन ऐप्पल डॉक्स के लिए ऐसी त्रुटि होने के लिए अजीब लगता है। क्या मैं कुछ भूल रहा हूँ?
पीछे की संगतता के लिए 'viewDidUnload' और' viewWillUnload' हैं? यदि ऐसा है, तो मैं यह कहने के लिए कोड पर टिप्पणी करने का सुझाव दूंगा कि इन दो विधियों को आईओएस 6 में बिल्कुल नहीं कहा जाएगा (जैसा कि [UIViewController दस्तावेज़] (http://developer.apple.com/library/ios/#documentation /uikit/reference/UIViewController_Class/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/occ/instm/UIViewController/viewWillUnload) स्थिति)। –
अच्छा सुझाव, thx। किया हुआ। – XJones
क्या यह कुछ हद तक बेहतर नहीं होगा यदि आप कस्टम ''my_view {Will | Did} Unload' के बजाय' (self viewWillUnload] 'और' [self viewDidUnload]' के अनुसार '- didReceiveMemoryWarning' को कॉल कर सकते हैं? – Ali