मैं ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए नया हूं, और एक अवधारणा जो मुझे कुछ समय के लिए समझ रही है वह अपरिवर्तनीयता है। मुझे लगता है कि कल रात प्रकाश बल्ब बंद हो गया था लेकिन मैं सत्यापित करना चाहता हूं:
जब मैं बयान करता हूं कि एक अपरिवर्तनीय वस्तु को नहीं बदला जा सकता है, तो मैं हैरान हूं क्योंकि मैं उदाहरण के लिए, निम्नलिखित कर सकता हूं:
NSString *myName = @"Bob";
myName = @"Mike";
वहाँ, मैंने अभी-अभी अपना नाम बदलकर, अपरिवर्तनीय प्रकार के NSString को बदल दिया है। मेरी समस्या यह है कि शब्द, "ऑब्जेक्ट" स्मृति में भौतिक वस्तु या अमूर्तता को संदर्भित कर सकता है, "myName।" पूर्व परिभाषा अपरिवर्तनीयता की अवधारणा पर लागू होती है।
चर के रूप में, अपरिवर्तनीयता की एक और अधिक स्पष्ट (मेरे लिए) परिभाषा यह है कि एक अपरिवर्तनीय वस्तु का मूल्य केवल स्मृति में अपना स्थान बदलकर बदल सकता है, अर्थात इसका संदर्भ (इसके सूचक के रूप में भी जाना जाता है)।
क्या यह सही है, या मैं अभी भी जंगल में खो गया हूं?
NSString
, यह एक " पॉइंटर टू औरNSString
" है, जो अपरिवर्तनीय नहीं है। मैं उद्देश्य सी के कुछ भी नहीं पता है, लेकिन मैं अपने उदाहरण है कि में अनुमान लगा रहा हूँ@"Mike"
का एक नया उदाहरण पैदा कर रही हैNSString
और करने के लिए यह बताए सूचक ,myName
। तो आपने उस ऑब्जेक्ट को नहीं बदला है जोmyName
इंगित कर रहा था, बस वह क्या इंगित कर रहा था।