ฉันยังใหม่ต่อการเขียนโปรแกรมเชิงวัตถุและแนวคิดหนึ่งที่ทำให้ฉันเข้าใจไม่ได้ ฉันคิดว่าหลอดไฟดับไปเมื่อคืน แต่ฉันต้องการยืนยัน:
เมื่อฉันเจอข้อความที่ไม่สามารถเปลี่ยนวัตถุที่ไม่เปลี่ยนรูปได้ฉันก็สับสนเพราะฉันสามารถทำสิ่งต่อไปนี้:
NSString *myName = @"Bob";
myName = @"Mike";
ที่นั่นฉันเพิ่งเปลี่ยน myName ประเภท NSString ที่ไม่เปลี่ยนรูป ปัญหาของฉันคือคำว่า "วัตถุ" สามารถอ้างถึงวัตถุทางกายภาพในหน่วยความจำหรือนามธรรม "myName" คำจำกัดความเดิมใช้กับแนวคิดของการเปลี่ยนแปลงไม่ได้
สำหรับตัวแปรนั้นนิยามของ immutability ที่ชัดเจน (สำหรับฉัน) คือค่าของวัตถุที่ไม่เปลี่ยนรูปสามารถเปลี่ยนได้โดยเปลี่ยนตำแหน่งในหน่วยความจำเช่นการอ้างอิง
ถูกต้องหรือไม่ฉันยังหลงทางอยู่ในป่า?
NSString
มันเป็น " ตัวชี้ไปยังและNSString
" ซึ่งไม่เปลี่ยนรูป ฉันรู้อะไรวัตถุประสงค์ C แต่ฉันคาดเดาในตัวอย่างของคุณว่า@"Mike"
คือการสร้างตัวอย่างใหม่ของNSString
และการกำหนดให้ตัวชี้myName
, ดังนั้นคุณไม่ได้เปลี่ยนวัตถุที่myName
ชี้ไปสิ่งที่ชี้ไป