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이 되지 않음
- c프로퍼티 에다가 nil을 assign하는 경우, C() 인스턴스를 nil로 만드는 것이 아님