작성
·
279
답변 1
0
안녕하세요
레퍼런스 타입이라는건 생성할 때 그 생성된 객체 자체를 갖고있게 하지 않습니다.
다시말해 레퍼런스 타입으로 변수를 만든다는건 메모리 어딘가(힙영역)에 객체를 만들어 놓고 그 객체 원본이 있는 메모리 주소만 변수에 알려주는 것입니다.
var b = ClassA()
즉 이렇게 만들어진 변수 b는 ClassA가 만들어진 객체의 주소정보만 갖고 있게 되는거죠
이 상태를 참조한다고 표현합니다.
그러므로 ClassA안에 정보가 변경되도 변수 b는 변경되는게 전혀 없게됩니다.
변수 b는 객체 원본의 주소정보만 갖고 있기 때문이죠.
그러므로 변수 입장에서는 아무런 변경이 없기 때문에 property observer가 호출되지 않는 것입니다.
반대로 struct같은 value 타입은 변수로 생성할 때 그 객체 자체 정보를 갖고 있습니다.
var c = StructA()
이렇게 struct타입으로 만들었다고 한다면 변수 c는 StructA의 모든 객체 정보를 담고 있습니다.
이 차이가 property observer가 동작되고 안되고 차이를 만들게 됩니다.