【Swift】 참조형과 값형에 대해서

참조형과 값형의 차이에 대해서



참조형



참조 유형은 인스턴스가 값에 대한 참조를 나타내는 유형을 의미합니다. 아래의 예에서는 a, b라는 빈 상자에 대해 같은 위치에서 데이터를 가져와 (참조)합니다. 그래서 b의 속성 값을 변경하면 a의 값도 동시에 변화하고 있음을 알 수 있습니다.
class StringClass {
    var string =  "何も言いません"
}

let a = StringClass()
print(a.string) // 何も言いません
var b = a

b.string = "こんにちは"
print(b.string) // こんにちは
print(a.string) // 何も言いません

값 유형



값 유형은 인스턴스가 값에 대한 참조가 아닌 값 자체를 나타내는 유형을 의미합니다. 아래의 예에서 말하면, 인스턴스화 할 때 c, d라는 빈 상자에 StringStruct가 복사되는 이미지입니다. 각 속성의 값을 확인해도 별도로 존재한다는 것을 알 수 있습니다. 그래서 이후의 조작이나 연산 등은 원래의 데이터에는 영향을 주지 않습니다.
struct StringStruct {
    var string = "何も言いません"
}

let c = StringStruct()
var d = c

d.string = "こんばんは"
print(c.string) // 何にも言いません
print(d.string) // こんばんは

이미지(참조형)



속성 b의 값이 변경되었으므로 값을 참조하는 a의 값도 변경되었음을 알 수 있습니다.


이미지(값 유형)



c,d는 각각 복사에 의해 작성된 인스턴스이므로 c,d끼리 의존성이 없습니다.

좋은 웹페이지 즐겨찾기