मैं तरीके इस प्रसिद्ध स्मृति संचय मुद्दे से बचने के लिए की टन की कोशिश की है, लेकिन & त्रुटियों मेरी लंबे परीक्षण के अनुसार, सबसे अच्छा और आसान तरीका सभी स्मृति को मुक्त करने के KeyboardViewController
की viewWillDisappear
में exit(0)
कॉल करने के लिए है ।
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
exit(0);
}
[अपडेट]exit(0)
सभी स्मृति को रिहा करने के बाद से यह कीबोर्ड विस्तार प्रक्रिया को मारता है सही था। दुर्भाग्य से ऐसा लगता है कि प्रक्रिया को मारने से आईओएस अस्थिर हो जाता है।
नतीजतन, सबसे स्थिर तरीका सभी आवंटित वस्तुओं को viewWillDisappear
में जितना संभव हो सके जारी करना है। उदाहरण के लिए,
सभी कस्टम दृश्य के लिए और सभी कस्टम दृश्य नियंत्रकों के लिए
ऐसे subviews, बाधाओं, इशारों, मजबूत प्रतिनिधि, और इतने पर के रूप में देखा गया और दृश्य नियंत्रकों, के सभी मजबूत संदर्भ निकाल दें।
[aView removeFromSuperview];
[aView removeConstraints:aView.constraints];
for (UIGestureRecognizer *recognizer in aView.gestureRecognizers)
[aView removeGestureRecognizer:recognizer];
सेट nil
दृश्य नियंत्रकों के सभी वस्तु संपत्तियों के लिए।
aViewController.anObject = nil;
अन्य बड़े कस्टम के लिए वस्तुओं
सभी सरणियों, शब्दकोशों से सभी जोड़ा घटक हटा दें, और इतने पर।
[anArray removeAllObjects];
कैश छवियों imageNamed:
का उपयोग नहीं करते हैं।
तो अच्छी तरह से जारी किया है, स्मृति उपयोग डिबगिंग या वृद्धि होगी नहीं किया जा बहुत थोड़ी वृद्धि हुई (नकारने प्रति < 0.1MBytes), जबकि। यदि कई वस्तुओं को छोड़ने के बाद स्मृति उपयोग में वृद्धि हुई है, भले ही कस्टम ऑब्जेक्ट्स जितना संभव हो सके, बाहर निकलें (0) को अनलोडिंग के कुछ जोखिमों के साथ समय-समय पर बुलाया जा सकता है।
क्या आप अपना कोड पोस्ट कर सकते हैं जहां आप वास्तव में इस मुद्दे का सामना कर रहे हैं? – iGW