Danny의 iOS 컨닝페이퍼
article thumbnail

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 증가하지 않습니다)

 

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!