나는 객체 지향 프로그래밍에 익숙하지 않으며, 이해하는 데 시간이 걸리는 한 가지 개념은 불변성입니다. 어젯밤에 전구가 꺼 졌다고 생각하지만 확인하고 싶습니다.
불변의 객체를 변경할 수 없다는 진술을 보았을 때, 예를 들어 다음을 수행 할 수 있기 때문에 당황합니다.
NSString *myName = @"Bob";
myName = @"Mike";
여기서 방금 변경 불가능한 유형 NSString의 myName을 변경했습니다. 내 문제는 "object"라는 단어가 메모리의 물리적 객체 또는 추상화 "myName"을 나타낼 수 있다는 것입니다. 전자의 정의는 불변성의 개념에 적용됩니다.
변수에 관해서는, 불변성의 더 명확한 (나에게) 불변의 객체 의 값 은 메모리에서의 위치, 즉 참조 (포인터라고도 함)를 변경해야만 변경할 수 있다는 것입니다.
이것이 맞습니까, 아니면 여전히 숲에서 길을 잃었습니까?
NSString
" 포인터 및NSString
"이며 변경할 수 없습니다. 나는 객관적인 C의 아무것도 몰라,하지만 난 당신의 예제에 같은데요@"Mike"
의 새로운 인스턴스를 만드는NSString
과에 할당 포인터 ,myName
. 따라서myName
가리키고 있는 객체를 가리 키지 않고 그대로 가리키고 있습니다.