दिलचस्प पोस्ट
android.content.res.Resources $ NotFoundException: स्ट्रिंग संसाधन ID # 0x0 किसी दिए गए नंबर के विभाजक की संख्या की गणना करने के लिए एल्गोरिथम jQuery – हटायें शैली .css () फ़ंक्शन के साथ जोड़ा गया " == गलत क्यों मूल्यांकन करता है" जब "नहीं " सफल होता है? त्रुटि: पता के साथ बाध्यकारी सॉकेट के दौरान पता पहले से ही उपयोग में है लेकिन पोर्ट नंबर 'netstat` द्वारा मुफ़्त दिखाया गया है JQuery में चेकबॉक्स मान प्राप्त करें SQL केस संवेदनशील स्ट्रिंग की तुलना करें एक नया पांडा कॉलम बनाने के लिए कई तर्कों के साथ फ़ंक्शन लागू करना डेटाबेस में या एक सिस्टम फ़ाइल में छवि स्टोर करें? विंडोज में क्रोन जॉब सेट करने के लिए php का उपयोग करें alloc और init वे वास्तव में क्या करते हैं numpy.array .__ iadd__ और दोहराया सूचकांक dc.js – चार्ट समूह रेंडर के लिए सुनना समझना __get__ और __set__ और पायथन डिस्क्रिप्टर आईओएस में कॉल इवेंट्स का पता लगा रहा है

मुझे किसका उपयोग करना चाहिए, -वेकेफ़ोमनीब या -विवलोकनडिडलोड?

हाल ही में मेरे ऐप में एक समस्या थी, जहां मैं -awakeFromNib-awakeFromNib उप- -awakeFromNib विधि में कुछ उप- -awakeFromNib का निर्माण कर रहा था दृश्य से गायब हो रहा था। कुछ -awakeFromNib बाद मुझे पता चला कि मैंने जो कोड डाल दिया था, वह- -awakeFromNib से -viewDidLoad ने समस्या को हल किया था। ऐसा लगता है कि -awakeFromNib को केवल एक बार कहा जाता है जब UIViewController को -viewDidLoad जाता है, और -viewDidLoad को हर बार दृश्य -viewDidLoad कहा जाता है

तो सबसे अच्छा अभ्यास क्या है? ऐसा लगता है कि UIViewController's -awakeFromNib को देखने के लिए कोई भी दृश्य नहीं जोड़ना चाहिए, उस प्रकार की सामग्री को -viewDidLoad में किया जाना चाहिए। क्या मुझे ये ठीक तरह से समझ आ रहा है? या क्या मैं सोचता हूं कि मैं इससे अधिक उलझन में हूं?

वेब के समाधान से एकत्रित समाधान "मुझे किसका उपयोग करना चाहिए, -वेकेफ़ोमनीब या -विवलोकनडिडलोड?"

awakeFromNib को तब कहा जाता है जब नियंत्रक स्वयं को एक निब से awakeFromNib जाता है viewDidLoad को कहा जाता है जब व्यू बनाया जाता है / अनर्जित होता है यह अंतर विशेष रूप से महत्वपूर्ण है जब नियंत्रक का दृश्य एक अलग निब फ़ाइल में संग्रहीत होता है।

इसके अलावा महत्वपूर्ण बात यह है कि स्मृति से चेतावनी के ठीक होने के बाद से awakeFromNib लिए awakeFromNib फ़ंक्शन को कभी भी नहीं बुलाया जाएगा। लेकिन, viewDidLoad फ़ंक्शन को बुलाया जाएगा।

हाँ यह सही है। आप सचमुच awakeFromNib पर भरोसा नहीं करना चाहिए।

awakeFromNib एक ऐसी घटना के समान है जिसे .NET में deserialization के बाद कहा जाता है। viewDidLoad Load ईवेंट में समान है। NET।

यदि आप .NET से अवधारणाओं से परिचित हैं, तो यह पर्याप्त होना चाहिए, मुझे लगता है।

मैं एक उदाहरण देकर जवाब देने की कोशिश करूंगा:

यदि customCell क्लास और customCell.xib फ़ाइल को परिभाषित करें, और उसके बाद का उपयोग करके सेल लोड करें
- (NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options , awakeFromNib कहा जाता है जब xib में ऑब्जेक्ट संग्रहित नहीं हैं

यदि आप customViewController को परिभाषित customViewController , तब जब customViewController का उपयोग किया जाता है - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil दृश्यडिडलोड को जब इसे दृश्य पदानुक्रम में लोड किया जाता है तब बुलाया जाएगा।

कुछ संबंधित भ्रमित तरीकों:

  • (शून्य) loadView; यह वह जगह है जहां subclasses अपने कस्टम दृश्य पदानुक्रम बनाने चाहिए अगर वे एक निब का उपयोग नहीं कर रहे हैं। यदि आप एक निब नाम निर्दिष्ट नहीं करते हैं, तो loadView एक निब को लोड करने का प्रयास करेगा जिसका नाम आपके दृश्य नियंत्रक वर्ग के समान है। यदि ऐसा कोई निबन्ध मौजूद नहीं है, तो आपको या तो कॉल -सेटदृश्य चाहिए: पहले-विज़िट लागू की जाती है, या अपने दृश्यों को प्रोग्रामैटिक रूप से सेट करने के लिए -लोडव्यू विधि ओवरराइड करें -लोड वीव को कभी भी सीधे नहीं कहा जाना चाहिए।

  • (शून्य) दृश्यडिडलोड: दृश्य लोड होने के बाद कहा जाता है। देखने के लिए कोड में बनाए गए नियंत्रकों, यह बाद- loadView है। दृश्य नियंत्रकों को निबन्ध से अनर्जित करने के लिए, यह देखने के बाद सेट किया गया है।