मैं थोड़ा उलझन में हूं कि वास्तव में निब-आधारित UIViewController
एस में क्या होता है।UIViewController के दृश्य में IBOutlets जारी करनाDidUnload?
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
जो subviews करने के लिए इस पर लागू होता है: जब एक UIViewController
उपवर्ग पैदा करने, टेम्पलेट viewDidUnload
विधि में एक बहुत ही विशेष टिप्पणी में शामिल है?
- जिन लोगों को मैंने
viewDidLoad
में प्रारंभ किया था? (मैं हाँ कहूंगा) - जिन्हें मैंने
initWithNibName
में शुरू किया था? (मैं नहीं कहूंगा) - आईबीओटलेट जो निब में वस्तुओं का संदर्भ देता है?
अगर मैं इस तरह दृश्य नियंत्रक का उपयोग करें:
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
इस मामले में मुझे लगता है कि यदि ऐसा नहीं होता है कि क्या ज्यादा बात उदाहरण चर subview के लिए संदर्भ पकड़ dealloc
के बाद से viewDidUnload
या dealloc
में जारी कर रहे हैं चाहिए जैसे ही व्यू कंट्रोलर स्टैक से पॉप आउट हो जाता है, इसलिए मुझे कॉल किया जा सकता है, इसलिए मैं ऐप्पल के रूप में भी ऐसा कर सकता हूं और dealloc
के बजाय viewDidUnload
पर इंस्टेंस चर जारी करता हूं।
if(self.myViewController == nil) {
self.myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
}
//Change some state which should be reflected in the view
self.myViewController.someProperty = someValue;
[self.navigationController pushViewController:self.myViewController animated:YES];
क्या MyViewController
में क्या होता है अगर मैं viewDidUnload
में एक IBOutlet जारी:
लेकिन मैं एक उदाहरण चर कि कई बार धक्का दिया जा सकता है के रूप में इस्तेमाल किया MyViewController
लगता है? क्या मैं अगले viewDidLoad
पर इसका नया संदर्भ रखने पर भरोसा कर सकता हूं?
दूसरे शब्दों में: viewDidUnload
के बाद दृश्य के साथ क्या होता है? अगर इसे फिर से धक्का दिया जाता है तो क्या इसे निब से रिहा किया जाता है और फिर से लोड किया जाता है? या दृश्य स्मृति में रहता है? और यदि हां, तो आउटलेट viewDidLoad
से पहले पुनः सेट करें?
किसी भी दृश्य स्मृति में रहता है और दुकानों viewDidLoad
पहले उसे फिर से स्थापित कर रहे हैं या हर बार नियंत्रक धकेल दिया जाता है पुनः लोड है, तो मुझे लगता है कि यह (viewDidUnload
में दुकानों को रिहा करने का सही होगा भी पहले मामले में हालांकि यह कोई फरक नहीं पडता)। लेकिन अन्यथा (विशेष रूप से दृश्य स्मृति में रहता है और दुकानों पर पुन: स्थापित कर रहे हैं तो), viewDidUnload
में subviews रिहा उपयोग के मामले मैं प्रस्तुत करने के लिए गलत है, मैं सही हूँ?
अद्यतन: ध्यान दें कि 'viewDidUnload' को आईओएस 6 के लिए बहिष्कृत किया जाएगा क्योंकि जाहिर है, यह बहुत से डेवलपर्स (केवल मुझे नहीं) में भ्रमित कर रहा था और वे अक्सर इसे गलत तरीके से उपयोग कर रहे थे, जो कारण होगा जब उनकी डेवलपर्स के लिए खाता नहीं था, तो स्मृति ऐप को तब तक दुर्घटनाग्रस्त/दुर्व्यवहार करने के लिए ... –