2012-09-20 14 views
21

में नहीं बुलाया गया है मैंने अभी एक्सकोड/ios6 का नया संस्करण स्थापित किया है। viewDidUnload अब अवमूल्यन है।viewDidUnload अब ios6

सेब डॉक में,

viewDidUnload [...] आईओएस 6.0 में पदावनत। दृश्य अब कम स्मृति स्थितियों के तहत शुद्ध नहीं हैं और इसलिए इस विधि को कभी नहीं कहा जाता है।

लेकिन क्षुधा की संख्या उनके गुणों को रिहा करने के लिए इस कॉलबैक का उपयोग कर रहे हैं, जैसे:

- (void)viewDidUnload { 
    [super viewDidUnload]; 

    self.recipientButton = nil; 
    self.connectButton = nil; 
    self.infoLabel = nil; 
} 

यह आपके IBOutlets जारी करने के लिए सबसे अच्छा अभ्यास था।

तो, पहला सवाल:
क्या iOS 6 में इन मौजूदा एप्लिकेशन को होने जा रहा है? क्या वे रिसाव करेंगे?

और दूसरा एक:
एक IBOutlet संपत्ति जारी करने के लिए नई सिफारिश तरीका क्या है? Dealloc विधि में?

उत्तर

22

पहले प्रश्न के लिए:

आपका ViewController didReceiveMemoryWarning विधि कॉलबैक प्राप्त होगा और आप नहीं के बराबर बाहर इस विधि में दृश्य & अन्य घटकों

संदर्भ के लिए WWDC 2012 वीडियो सत्र दृश्य नियंत्रक के विकास पर चेक कर सकते हैं , यदि आपके पास नहीं है (मुझे विश्वास है कि वे केवल पंजीकृत डेवलपर्स के लिए उपलब्ध हैं, लेकिन सुनिश्चित नहीं हैं)।

आपके दूसरे के उत्तर दें।

[ऑब्जेक्ट रिलीज]; dealloc में। रिलीज से पहले ऑब्जेक्ट को शून्य करने की आवश्यकता नहीं है।

+0

अपने जवाब के लिए धन्यवाद। वास्तव में, मैं और अधिक पहला सवाल करने के लिए इच्छुक हूँ। लेकिन http://stackoverflow.com/a/9281416/127493 के रूप में कहते हैं, IBOutlet गुण पिछले सर्वश्रेष्ठ व्यवहार में viewDidUnload में जारी की जानी चाहिए (उदाहरण के लिए, वहाँ पर अन्य विषय के नंबर दिए गए हैं)। – Martin

+0

@ मार्टिन कृपया संपादित उत्तर –

+0

बेशक, '[ऑब्जेक्ट रिलीज];' डीलोक में केवल तभी संभव है जब आप एआरसी नहीं चल रहे हों। –

9

मैं आप की तरह

@property (weak) IBOutlet UILabel * labelText; 

इस तरह आप dealloc में कुछ भी करने की जरूरत नहीं है IBOutlets के लिए कमजोर संपत्ति का उपयोग करने की सलाह देते हैं। आईओएस 6 में, बस ViewDidUnload कॉल नहीं करेगा, आईओएस 5 या इससे पहले यह केवल कॉल है जब स्मृति चेतावनी होती है।

1

और दूसरा: आईबीओलेट संपत्ति को रिलीज़ करने का नया अनुशंसित तरीका क्या है? Dealloc विधि में?

"पुराने" की सिफारिश की तरीका क्या है? आपको dealloc में हमेशा बनाए गए आवृत्ति चर जारी रखना होगा; यह हमेशा इस तरह से किया गया है और इस तरह से हो रहा है।

यह सिर्फ इतना है कि viewDidUnload में कर सकता था (जो केवल कम स्मृति के लिए कहा जाता है) आप भीnil करने के लिए अपने गुण सेट करें।

संबंधित मुद्दे