반응형
Swift에서는 자동으로 힙 영역의 메모리 관리해주는 ARC가 있습니다.
ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 메모리를 자동으로 해제한다
ARC의 메모리 관리
객체(힙 영역)의 참조 횟수를 계산하여 RC가 0이 되면 자동으로 메모리를 해제합니다.
💡 RC: Reference Count
== 이 객체를 참조하고 있는 숫자
참조 카운트 세는 법
- Count Up +1
- Count Down -1
강한 참조, 약한 참조, 비참조
강한 참조(Strong)
- default(기본) 값이 기본으로 강한 참조입니다.
- 순환 참조(Strong Reference Cycle): 영구적으로 메모리가 해제되지 않을 수 있어요.
- 힙 영역에서 서로가 서로를 참조할 경우
약한 참조(Weak)
- 오직
변수(var)
에만 선언 가능하고 옵셔널 타입에서만 사용합니다. - 보통 수명이 짧은 생명주기를 가진 인스턴스에 선언
- 이런 현상(순환 참조)을 방지하기 위해서
weak
이란 키워드를 붙여준다. (RC 증가하지 않는다)
비소유 참조(Unowned)
- 생명주기가 더 길거나 같은 경우에 사용합니다.
- 참조하고 있던 인스턴스의 메모리가 해제돼도 , nil로 초기화가 되지 않고 메모리 주소값을 계속 들고 있어요.
- 뷰컨은 보통 오래 존재하므로, 다른 곳에다 선언해 줘야 됩니다.
weak
키워드랑 비슷하게 동작해요 (RC 증가하지 않습니다)
반응형
'Xcode' 카테고리의 다른 글
[iOS/Swift] 의존성 주입, 의존성 역전이란? (4) | 2023.03.12 |
---|---|
[iOS/Swift] 접근 제어(Access Control) (0) | 2022.12.27 |
[iOS/Swift] 프로젝트 이름 변경 (0) | 2022.12.21 |