-
스위프트의 메모리 관리 모델Swift/swift 문법 2023. 4. 24. 19:38
값 형식과 참조 형식
값 형식 : 필요 시 항상 메모리의 값이 복사되어 전달됨 (값의 저장:stack)
값이 들어있는 스택의 스코프가 종료되면 메모리에서 자동으로 제거된다.
참조형식: 메모리의 주소를 전달 (값의 저장: Heap)
-> Reference Counting을 통해 메모리를 관리 (ARC)
-> 힙 영역에 할당되는 데이터는 개발자가 잘 관리해야한다. 할당이 해제되지 않으면 메모리 누수 현상이 발생.
강한참조 사이클
참조: 그 대상을 가리키고 (메모리의 주소값을 다른 인스턴스에서 저장하고 있음)있음
약한참조(weak)
예시
weak var vehicle: Car?
의미: Dog 타입의 인스턴스를 가리킬건데, RC는 올리지 않겠다.
참조하는 인스턴스가 없으면 nil을 할당할것.
비소유 참조 (unowned)
예시
unowned var vehicle: Car?
의미: Dog 타입의 인스턴스를 가리킬건데, RC는 올리지 않겠다.
참조하는 인스턴스가 없으면 오류 발생
-> 소유자보다 인스턴스의 생명주기가 더 길거나 같은 경우 (소유자: vehicle, 인스턴스: Car)