6

संभालने यह viewDidUnload में nil पर सेट है कि, माना कि एक विशेषता है, अर्थात् fetchedResultsController, chatViewController की, UITableViewController का एक उपवर्ग का एक उदाहरण है, हमेशा nil जब viewDidLoad कहा जाता है कि यह सुरक्षित है? ओह!कब देखेंDidLoad कहा जाता है?

यदि ऐसा है, तो मुझे एक्सकोड उदाहरण एप्लिकेशन CoreDataBooks जैसे एक्सेसर फ़ंक्शन को फिर से परिभाषित करने की तत्काल आवश्यकता दिखाई नहीं देती है। मैं बस एक अलग फ़ंक्शन के बजाय viewDidLoad में वह कोड डाल दूंगा क्योंकि यह एकमात्र जगह है जिसका मैं इसका उपयोग करूंगा।

उत्तर

3

viewDidLoad को आपके दृश्य लोड होने के बाद बुलाया जाता है। चाहे प्राप्त किया गया हो या नहीं, रीसेट कंट्रोलर शून्य है या नहीं, इस पर निर्भर करता है कि व्यू कंट्रोलर कैसे प्रारंभ किया गया है। उदाहरण के लिए, जब detailViewController बनाते समय, आप तैयार कर सकते हैं fetchedViewControllerviewDidLoad से पहले कहा जाता है:

RecipeDetailViewController *detailViewController = [[RecipeDetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    detailViewController.fetchedResultsController = fetchedResultsController; 

    [self.navigationController pushViewController:detailViewController animated:animated]; 
    [detailViewController release]; 

कहा, तो viewDidUnload में fetchedResultsController nil'ing यह सुनिश्चित करना होगा कि यह नहीं के बराबर है।

+0

कूल। धन्यवाद। मुझे लगता है कि आपकी आखिरी वाक्य ने मेरे प्रश्न का उत्तर दिया है। यह जानकर अच्छा लगा! :) – ma11hew28

2

आपको यह मानना ​​होगा कि ViewDidLoad को कई बार कहा जा सकता है। अगर कोई मेमोरी चेतावनी भेजी जाती है, तो आपका व्यू कंट्रोलर मेमोरी से दृश्य को अनलोड कर देगा, और अगली बार इसकी आवश्यकता होगी ViewDidLoad को कॉल किया जाएगा।

+2

बस स्पष्ट होने के लिए, 'viewDidLoad' को लगातार कई बार नहीं कहा जाएगा। –

+2

यह समझ में आता है। तो, मैं यह मान सकता हूं कि यदि मैं 'viewDidLoad' में' fetchedResultsController' सेट करता हूं और 'nil' इसे' viewDidUnload' में सेट करता हूं, तो मैं अनावश्यक रूप से इसे 'viewDidLoad' में सेट नहीं करूँगा? दूसरे शब्दों में, 'viewDidUnload' को हमेशा' viewDidLoad' 'की दूसरी कॉल से पहले बुलाया जाता है, सही? – ma11hew28

3

viewDidLoad ये Secnarion में कहा जाता है: -

1. जब हम बनाने यह segue द्वारा या stoary बोर्ड आईडी द्वारा वस्तु के बाद दृश्य नियंत्रक धक्का।

2. इसे एप्लिकेशन में अधिक समय बनाने के मामले में एक से अधिक बार बुलाया जाता है और इसे बार-बार दबाया जाता है। उदाहरण के लिए: - यदि आप कोउरसल (जिसे स्क्रॉलिंग के दौरान अतिरिक्त नियंत्रक के लिए आवश्यक है) जैसे कार्यान्वित करना है इसकी आवश्यकता है ताकि इसे कई बार viewDidLoad कहा जा सके।

3. यह कॉल किया जाता है जब सभी मेमोरी इंस्टेंस (uiviewcontroller और इसका सबक्लस तत्काल) जिसका अर्थ है कि जब हमारा विचार पते के साथ स्मृति में लोड करने के लिए तैयार होता है।

4. याद रखें केवल बाल वर्ग नियंत्रक ऑब्जेक्ट बनाया गया है .. सामान्य कक्षा ऑब्जेक्ट को सामान्य सिक्योरियन के दौरान कभी भी तत्काल नहीं किया गया है।

0

viewDidLoad केवल तभी कॉल किया जाता है जब दृश्य पहली बार तत्काल होता है। यदि आप अपने आवेदन में प्रत्येक बार व्यू कंट्रोलर को दोबारा नहीं बना रहे हैं, तो आपको केवल एक बार इसे कॉल किया जाएगा (और यदि आपको स्मृति चेतावनी मिलती है तो फिर से कॉल किया जाता है, और दृश्य शून्य हो जाता है)।

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