स्विफ्ट - विचलन

इससे पहले कि किसी वर्ग के उदाहरण को 'डिइन्युएलाइज़र' से हटा दिया जाए, मेमोरी स्पेस को हटाने के लिए बुलाया जाना चाहिए। 'Deinit' शब्द का प्रयोग सिस्टम रिसोर्स द्वारा कब्जा की गई मेमोरी स्पेस को डील करने के लिए किया जाता है। विचलन केवल वर्ग प्रकारों पर उपलब्ध है।

मेमोरी स्पेस को डीललोकेट करने के लिए डीनेन्ट्रीलाइजेशन

स्विफ्ट 4 संसाधनों को खाली करने के लिए स्वचालित रूप से आपके उदाहरणों को स्वचालित रूप से निपटाता है। स्विफ्ट 4 स्वचालित संदर्भ गणना (एआरसी) के माध्यम से इंस्टेंस की मेमोरी प्रबंधन को संभालता है, जैसा कि स्वचालित संदर्भ काउंटिंग में वर्णित है। आमतौर पर आपको मैन्युअल रूप से क्लीन-अप करने की आवश्यकता नहीं होती है जब आपके उदाहरणों को हटा दिया जाता है। हालाँकि, जब आप अपने स्वयं के संसाधनों के साथ काम कर रहे होते हैं, तो आपको कुछ अतिरिक्त सफाई स्वयं करने की आवश्यकता हो सकती है। उदाहरण के लिए, यदि आप किसी फ़ाइल को खोलने के लिए एक कस्टम क्लास बनाते हैं और उसमें कुछ डेटा लिखते हैं, तो आपको क्लास के उदाहरण से पहले फ़ाइल को बंद करने की आवश्यकता हो सकती है।

var counter = 0; // for reference counting
class baseclass {
   init() {
      counter++;
   }
   deinit {
      counter--;
   }
}
var print: baseclass? = baseclass()

print(counter)
print = nil
print(counter)

जब हम खेल के मैदान का उपयोग करके उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं -

1
0

जब प्रिंट = एनआईएल स्टेटमेंट को छोड़ दिया जाता है, तो काउंटर का मान उसी तरह से बरकरार रहता है, क्योंकि यह डीइनिविटलाइज्ड नहीं है।

var counter = 0; // for reference counting

class baseclass {
   init() {
      counter++;
   }
   deinit {
      counter--;
   }
}
var print: baseclass? = baseclass()
print(counter)
print(counter)

जब हम खेल के मैदान का उपयोग करके उपरोक्त कार्यक्रम चलाते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं -

1
1