var object = A class
var obj2 = object
객체는 Ox7ED830에 생성
object는 (5)에서 Ox7ED830 값을 가짐(그 주소를 가리킴)
obj2는 (6)에서 Ox7ED830 값을 가짐(그 주소를 가리킴)
클래스, 클로저는 레퍼런스 타입
나머지는 모두 밸류 타입
class Parent {
var name = "string"
}
var valueInstance = String("A")
var anotherValueInstance = String("B")
anotherValueInstance = valueInstance
valueInstance = "C"
var father = Parent()
var mother = Parent()
var uncle = father
uncle.name = "I'm your father"
print(father.name)
결과
밸류 타입인 valueInstance 은 값이 A 에서 C 로 바뀜
레퍼런스 타입인 father 과 uncle은 값(메모리 가리키는 곳)이 같음. uncle.name을 바꾸니 father.name도 바뀌었음
copy on demand: 함수에 파라미터로 넘어가는 값 중 큰 값은 무조건 밸류 타입으로 넘어가는 것이 아니라 상황에 따라 swift가 알아서 레퍼런스 타입으로 넘기는 것도 있다.