[IOS 로드맵] Value Semantics(+ Reference Semantics)

willis18·2021년 9월 30일
0

IOS 로드맵

목록 보기
22/109

Value Semantics

var a: Int = 42
var b: Int = a
b = 0
print(a, b)
// Prints "42 0"

결국 값 타입(Value Type)을 말하는 것이다 위의 경우처럼 참조타입이 아니기 때문에 값을 복사하는 식으로 되기 때문에 별도의 변수로 동작해서 값을 바꾸더라도 이전에 복사받은 변수에 영향이 없는 것을 의미한다
이 파트는 POP의 하위문서로 값타입으로 작동하는 의미가 어떤 것인지 설명하기 위해 작성되었다.

↕️

Reference Semantics

class MyReferenceType {
  var a: Int
  init(a: Int) {
    self.a = a
  }
}
var R1 = MyReferenceType(a: 1)
var R2 = R1
R2.a = 42
print(R1.a, R2.a)
// Prints "42 42"

클래스의 인스턴스는 refernce type이다
ios 로드맵에 없는 과정같아서 여기서 한번에 정리할 것이다
즉 레퍼런스 타입은 참조하기 때문에 c에서 처럼 포인터 개념을 가져오면 이해 될 수 도있다.
주소를 복사해오기 때문에 그 주소를 변수가 대리인으로써 있는 식으로해서
R2.a에 값을 넣으면 실제로는 R2는 R1의 주소를 가지고 이 R1은 실질적인 물리적인 하드웨어의 주소에 값을 저장한다.

참고 : https://jimmymandersson.medium.com/understanding-swift-value-semantics-d84d57b937a2

0개의 댓글