2010-03-02 9 views
23

मैं जानना चाहता हूं कि रीयलिंग गुणों से पहले या इसके बाद कॉलिंग [सुपर व्यूडिडउनलोड] के बीच कोई अंतर है या नहीं।आईफोन: [सुपर व्यूडिडउनलोड] कॉलिंग ऑर्डर

धन्यवाद!

self.webView = nil; 
    self.fullText = nil; 
    [super viewDidUnload]; 

या

[super viewDidUnload]; 
    self.webView = nil; 
    self.fullText = nil; 
+0

संबंधित: http://stackoverflow.com/questions/2148450/viewdidload-unload-messages-to-super – cregox

+1

['super viewDidLoad] 'सम्मेलन के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/ 844195/सुपर-व्यूडिडलोड-सम्मेलन) –

उत्तर

12

यह वही सुपर क्लास viewDidUnload में करता है पर निर्भर करता है। यदि यह सिर्फ मानक UIViewController है, तो ऐसा होगा क्योंकि -[UIViewController viewDidUnload] कुछ भी नहीं करता है।

+0

ओह, यह नहीं देखा कि यह किसी भी तरह से पहले से ही उत्तर दिया गया था! – conorgriffin

+1

अन्य मामले के बारे में क्या - यानी यदि '[super viewDidUnload]' मानक 'UIViewController' नहीं है और 'viewDidUnload' में कुछ करता है? – matm

+5

@ डेलिरस: "साफ" करने के तरीकों के लिए, सुपर के कार्यान्वयन को आमतौर पर बाद में बुलाया जाता है। इसी प्रकार, "प्रारंभिक" विधियों को पहले सुपर कॉल करना चाहिए। – rpetrich

2

यह केवल तभी महत्वपूर्ण है जब आपके दृश्य का सुपरक्लास वास्तव में viewDidLoad में कुछ करता है। डिफ़ॉल्ट UIViewControllerviewDidLoad में कुछ भी नहीं करता है, इसलिए यदि आपका दृश्य मानक UIViewController है तो आप viewDidLoad विधि में कहीं भी [super viewDidLoad] डाल सकते हैं। हालांकि, superviewDidLoad में कुछ करता है, तो इससे कोई फर्क नहीं पड़ता कि आपने [super viewDidLoad] रखा है।

+0

वह [super viewDidUnload] के बारे में पूछता है DidLoad नहीं। –

6

इस प्रश्न का पूरी तरह उत्तर नहीं दिया गया है। (और जब मैं इस विषय पर Google पर पहली बार हिट करता हूं, तो मेरा पूरा जवाब मेरे और अन्य लोगों के लिए उपयोगी होगा।)

यदि सुपरक्लास दृश्य में कुछ करता है, तो डाउनलोड करें, फिर इसे अपने वर्ग के दृश्य में कॉल करने के लिए सही क्रम क्या है DidUnload गुणों को जारी करने से पहले या बाद में?

रिकॉर्ड के लिए, ऐसा लगता है आम सहमति सुपर विधि पिछले कॉल करने के लिए है:

-(void)viewDidUnload {
    self.some_property = nil;
    [super viewDidUnload];
}

10

मैंने कभी नहीं सोचा था कि यह मायने रखता है, लेकिन हम सिर्फ एक बग दुर्घटनाग्रस्त जहां ऐप यह पहली बार बुला पाया। मेरे कार्यालय की प्रवृत्ति इसे आखिरी बार कॉल करने के लिए है, लेकिन ऐप्पल टेम्पलेट इसे पहले रखता है।

आप जो भी चाहते हैं वह कर सकते हैं, लेकिन मैं इसे हमेशा से आखिरी बार कॉल करूंगा।

+1

दिलचस्प बात यह है कि यदि आप आईबी से कोड को पीछे खींचते हैं, तो यह सुपर कॉल * पहले * सुपर कॉल को सम्मिलित करता है ... टेम्पलेट्स और टिप्पणियों की स्थिति को कोई समझ नहीं आता है। – typeoneerror

+0

@ZaBlanc के समान अनुभव किया। दुर्घटना! – raheel

+0

हालांकि टेम्पलेट इसे पहले रखता है, फिर भी मैं हमेशा सुरक्षा सुविधा के रूप में इसे अंतिम रखता हूं, बस अगर सुपर कुछ ऐसा अनलोड करता है जो प्रोग्राम को मक-अप कर सकता है। – ArtSabintsev

2

यह सिर्फ डेलोक विधि की तरह है।

- (void)dealloc 
{ 
    [array release]; 
    [super dealloc]; 
} 

तो मुझे लगता है कि हमें अंतिम [super viewDidUnload] पर कॉल करना चाहिए।

+0

ऐप्पल को अपना दृश्य अपडेट करना चाहिए टेम्पलेट अपलोड करें। – neoneye

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