Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 프로퍼티 assign 개념 (#reference type, #ARC) 본문

iOS 응용 (swift)

[iOS - swift] 프로퍼티 assign 개념 (#reference type, #ARC)

jake-kim 2024. 2. 15. 01:20

프로퍼티를 assign한다는 의미

  • assign한다는 것은 아래처럼 특정 값을 변수에 대입한다는 의미
// a에 1을 assign하는 형태
let a = 1

assign되는 2가지 형태

  • primary type, struct와 같은 value type을 assign하는 경우
    • value type을 assign하게되면 a프로퍼티는 value type가 됨
// a에 1을 assign하는 형태
let a = 1
  • class와 같은 reference type을 assign하는 경우
    • reference type을 assign하게되면 해당 프로퍼티는 reference type이 됨
class C {}
let c = C()

 

reference type 주의사항

  • reference type이라는 의미를 주의할 것
    • 아래와 같이 c 인스턴스는 reference type이고 이 c를 다시 referenceOfc프로퍼티에 assign하는 경우
    • 이때 c에 nil을 대입했을때 referenceOfc도 같이 nil이 될 수 있다고 잘못생각할 수 있음
class C {}
private var c: C? = C()
let referenceOfc = c
c = nil

print(referenceOfc) // Optional(C)
  • c프로퍼티는 C() 인스턴스를 참조하는 상태에서, let referenceOfc = c를 할 경우 referenceOfc는 c가 참조하고 있는 인스턴스의 주소값을 공유한다는 의미
    • c프로퍼티 에다가 nil을 assign하는 경우, C() 인스턴스를 nil로 만드는 것이 아님
      (일반적으로 nil을 assign하여 메모리 초기화 되는 것은 ARC에 의하여 참조 카운팅이 0이되어서 메모리 해제되는 것뿐)
    • 즉 c에다가 nil을 assign하더라도 referenceOfc 프로퍼티는 nil이 되지 않음
Comments