Swift Academy · पाठ

डीइनिशियलाइज़र और मेमोरी जीवनचक्र

किसी ऑब्जेक्ट के डीऐलोकेट होने से पहले संसाधनों को साफ़ करने के लिए deinit का उपयोग करें।

पाठ 4, कुल 4 में से12 चरण

डीइनिशियलाइज़र और मेमोरी जीवनचक्र, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्वागत है

स्विफ्ट वर्ग एक `deinit` परिभाषित कर सकते हैं, जो उदाहरण के मेमोरी से हटाए जाने से ठीक पहले चलता है। वस्तु के पूरे जीवनचक्र — init → use → deinit — को समझना संसाधन प्रबंधन के लिए महत्वपूर्ण है।

विघटनकर्ता क्या है

```swift class FileHandle { let path: String init(path: String) { self.path = path; print("Opened \(path)") } deinit { print("Closed \(path)") } } do { let f = FileHandle(path: "/tmp/log.txt") } // deinit called here when f goes out of scope ```

विघटनकर्ता के वाक्यविन्यास नियम

• केवल वर्ग — स्ट्रक्चर और एनम में `deinit` नहीं होता • कोई पैरामीटर या लौटाया गया मान नहीं • कोष्ठक नहीं: `deinit { }`, `deinit() { }` नहीं • ARC द्वारा स्वचालित रूप से कॉल किया जाता है — इसे स्वयं कभी कॉल न करें • अधिवर्ग का `deinit`, उपवर्ग के `deinit` के बाद स्वचालित रूप से कॉल किया जाता है

साफ़-सफ़ाई के उपयोग

`deinit` के सामान्य उपयोग: • नेटवर्क कनेक्शन बंद करना • सूचना पर्यवेक्षकों को हटाना: `NotificationCenter.default.removeObserver(self)` • टाइमर अमान्य करना • फ़ाइल हैंडल या डेटाबेस कनेक्शन बंद करना

रिटेन संख्या और जीवनचक्र

ARC यह ट्रैक करता है कि किसी वस्तु की ओर कितने मज़बूत संदर्भ संकेत करते हैं: ```swift var a: Dog? = Dog() // retain count = 1 var b = a // retain count = 2 a = nil // retain count = 1 b = nil // retain count = 0 → deinit called ```

उपवर्ग विघटनकर्ता श्रृंखला

```swift class Base { deinit { print("Base deinit") } } class Child: Base { deinit { print("Child deinit") } // super.deinit called automatically after } var c: Child? = Child() c = nil // prints: Child deinit, then Base deinit ```

कमज़ोर संदर्भ से धारण रुकता है

```swift class Owner { var pet: Dog? deinit { print("Owner gone") } } class Dog { weak var owner: Owner? // weak = no strong retain deinit { print("Dog gone") } } ``` जब `owner` को शून्य पर सेट किया जाता है, तब `Owner` को मेमोरी से हटाया जा सकता है, भले ही `Dog` का एक संदर्भ मौजूद हो।

धारण चक्र विघटनकर्ता को रोकते हैं

```swift class A { var b: B? } class B { var a: A? } var a: A? = A() var b: B? = B() a?.b = b b?.a = a a = nil b = nil // deinit never called — retain cycle! ```

टाइमर अमान्यकरण प्रतिरूप

```swift class PollingService { var timer: Timer? func start() { timer = Timer.scheduledTimer(...) } deinit { timer?.invalidate() timer = nil print("Timer stopped") } } ```

इंस्ट्रूमेंट्स से लीक का पता लगाना

यदि `deinit` कभी कॉल नहीं होता, तो संभवतः आपके पास धारण चक्र है। उन वस्तुओं का पता लगाने के लिए जिन्हें आवंटित तो किया गया, लेकिन मेमोरी से हटाया नहीं गया, एक्सकोड इंस्ट्रूमेंट्स → लीक टेम्पलेट का उपयोग करें।

त्वरित जाँच

कौन-से प्रकार `deinit` परिभाषित कर सकते हैं?

पुनरावलोकन

मुख्य बातें: • `deinit { }` — मेमोरी से हटाने से पहले संसाधनों की साफ़-सफ़ाई करें • केवल वर्ग; अधिवर्ग का deinit उपवर्ग के बाद स्वचालित रूप से कॉल होता है • ARC यह निर्धारित करता है कि deinit कब चलता है (रिटेन संख्या 0 होने पर) • धारण चक्र deinit को रोकते हैं — `weak`/`unowned` से इन्हें तोड़ें • उन वस्तुओं को खोजने के लिए इंस्ट्रूमेंट्स लीक का उपयोग करें जिनका deinit कभी नहीं चलता पाठ्यक्रम पूरा हुआ! अगला विषय: एनम पैटर्न और स्थिति मशीनें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “डीइनिशियलाइज़र और मेमोरी जीवनचक्र” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “डीइनिशियलाइज़र और मेमोरी जीवनचक्र” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“डीइनिशियलाइज़र और मेमोरी जीवनचक्र” में मैं क्या सीखूँगा?

किसी ऑब्जेक्ट के डीऐलोकेट होने से पहले संसाधनों को साफ़ करने के लिए deinit का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“डीइनिशियलाइज़र और मेमोरी जीवनचक्र” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. क्लास विरासत और super कीवर्ड
  2. override, final और उपक्लासिंग रोकना
  3. टाइप कास्टिंग: is, as?, as! और as
  4. डीइनिशियलाइज़र और मेमोरी जीवनचक्र
← Swift Academy पर वापस जाएँ