Value Type & Reference Type

한천희·2020년 2월 13일
0

iOS & Swift

목록 보기
2/6

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가 알아서 레퍼런스 타입으로 넘기는 것도 있다.

0개의 댓글