बीच क्या अंतर है viewDidLoadऔर viewDidAppear? उन कार्यों में किस तरह का इनिशियलाइज़ेशन या कस्टम कोड जाता है?
उदाहरण presentModalViewControllerकेवल तभी काम करता है जब उसमें मौजूद हो viewDidAppearऔर न हो viewDidLoad।
बीच क्या अंतर है viewDidLoadऔर viewDidAppear? उन कार्यों में किस तरह का इनिशियलाइज़ेशन या कस्टम कोड जाता है?
उदाहरण presentModalViewControllerकेवल तभी काम करता है जब उसमें मौजूद हो viewDidAppearऔर न हो viewDidLoad।
जवाबों:
viewDidLoadको ठीक एक बार कहा जाता है, जब दृश्य नियंत्रक को पहले मेमोरी में लोड किया जाता है। यह वह जगह है जहां आप किसी भी इंस्टेंस चर को इंस्टेंट करना चाहते हैं और इस व्यू कंट्रोलर के संपूर्ण जीवनचक्र के लिए रहने वाले किसी भी विचार का निर्माण करते हैं। हालाँकि, इस बिंदु पर दृश्य आमतौर पर दिखाई नहीं देता है।
viewDidAppearकहा जाता है जब दृश्य वास्तव में दिखाई देता है, और एक दृश्य नियंत्रक के जीवनचक्र के दौरान कई बार कहा जा सकता है (उदाहरण के लिए, जब एक मोडल दृश्य नियंत्रक को खारिज कर दिया जाता है और दृश्य फिर से दिखाई देता है)। यह वह जगह है जहाँ आप किसी भी लेआउट क्रिया को करना चाहते हैं या यूआई में कोई भी ड्राइंग करना चाहते हैं - उदाहरण के लिए, एक मोडल व्यू कंट्रोलर प्रस्तुत करना। हालाँकि, आप यहां जो कुछ भी करते हैं, उसे दोहराना चाहिए। यदि आप गायब हो जाते हैं, तो यह सबसे अच्छी बात है कि आप यहां चीजों को बनाए नहीं रख सकते हैं, अन्यथा आपको मेमोरी लीक हो जाएगा, जब आप उन्हें गायब नहीं करते हैं।
देखें: https://developer.apple.com/documentation/uikit/uiviewcontroller
viewDidLoadआम तौर पर केवल एक बार और केवल एक बार कहा जाता है, एक स्थिति है जहां इसे फिर से बुलाया जा सकता है। विशेष रूप से, यदि आप कभी भी प्राप्त करते हैं didReceiveMemoryWarning, तो आपके गैर-दृश्य दृश्य जारी किए जा सकते हैं (हालांकि दृश्य नियंत्रक अछूते हैं) और जब आप वापस लौटते हैं, तो viewDidLoadउन्हें फिर से बुलाया जा सकता है।
didReceiveMemoryWarning। लेकिन मैं इस बात से सहमत हूं कि यदि आप लिखते समय अच्छी प्रैक्टिस करते हैंviewDidLoad , तो आपको ठीक होना चाहिए। मेरा एकमात्र बिंदु यह है कि आइवर का मैला उपयोग और मैनुअल मेमोरी प्रबंधन निश्चित रूप से लीक में परिणाम कर सकता है viewDidLoad। लोगों को didReceiveMemoryWarningपरिदृश्य और कार्यक्रम के अनुसार संवेदनशील होना चाहिए ।
viewDidLoadजिस पर कोड का रिसाव होगा didReceiveMemoryWarning। आह।
सीधे शब्दों में कहें, तो आप किसी भी नियंत्रण या सरणियों को बनाना चाहते हैं viewDidLoad, जहां जैसा है viewDidAppear, जहां आप उन नियंत्रणों या सरणियों को ताज़ा करना चाहते हैं।
viewDidLoadजब एक बार कंट्रोलर बनाया viewDidAppearजाता है और उसे हर बार व्यू, वेल, डीआईडी दिखाई देता है। तो कहते हैं कि आपके पास एक आदर्श दृष्टिकोण है जो आप पेश करते हैं, जब वह दृश्य खारिज हो जाता है,viewDidAppear जाता है, तो उसे कॉल किया जाएगा, और viewDidLoadउसे कॉल नहीं किया जाएगा।
viewDidLoad जा सकता है । यदि आपके दृश्य को प्रदर्शित नहीं किया जाता है (अन्य दृश्यों के ढेर के नीचे) कम स्मृति स्थिति में iOS के पुराने संस्करणों द्वारा अनलोड किया जाता है, तो दृश्य नियंत्रक स्क्रीन पर पुनः प्रदर्शित होने की आवश्यकता पर दृश्य को स्वचालित रूप से पुनः लोड करेगा। IOS के बाद के संस्करणों में आप मेमोरी उपयोग को कम करने में मदद कर सकते हैं जो पहले iOS आपके लिए करता था: संदेश आने पर ऑफस्क्रीन दृश्य उतारें , जिस स्थिति में फिर से कॉल किया जाएगा। didReceiveMemoryWarningviewDidLoad