Swift의 ARC (Automatic Reference Counting)

2024. 11. 24. 22:52·App Development/Swift

 

ARC는 Automatic Reference Counting의 약자로, Swift에서 메모리를 효율적으로 관리하기 위해 사용되는 메모리 관리 기법입니다. 이는 Objective-C의 메모리 관리 방식을 자동화한 형태로, 프로그래머가 명시적으로 메모리를 해제하지 않아도 메모리 누수를 방지할 수 있도록 설계되었습니다.

 

ARC의 동작 원리

ARC는 Class instance의 참조 횟수(Reference count)를 추적합니다.

  • 각 class instance는 메모리에서 할당될 때 참조 카운터를 가지고 있습니다.
  • 다른 객체나 변수가 해당 instance를 참조할 때 참조 카운터가 증가합니다.
  • 참조가 해제될 때(예: 변수가 scope를 벗어날 때) 참조 카운터가 감소합니다.
  • 참조 카운터가 0이 되면 ARC는 해당 메모리를 자동으로 해제합니다.
class Person {
    var name: String

    init(name: String) {
        self.name = name
        print("\(name) is initialized")
    }

    deinit {
        print("\(name) is deinitialized")
    }
}


var person1: Person? = Person(name: "John") // 참조 카운터: 1
person1 = nil // 참조 카운터: 0, 메모리 해제

 

ARC가 적용되는 타입

  • ARC는 참조 타입인 클래스에만 적용됩니다.
  • 값 타입(Value Type)인 구조체(struct)나 열거형(enum)은 ARC와 무관합니다. 값 타입은 복사 시 별도의 독립된 메모리를 사용하므로, 참조 관리가 필요하지 않습니다.

 

ARC의 장점

  • 프로그래머가 수동으로 메모리를 관리하지 않아도 되므로 코드가 간결해집니다.
  • 메모리 누수 문제를 방지할 수 있습니다(순환 참조 문제를 제외하면).

 

ARC와 성능 최적화

  • 참조 횟수 증가/감소는 비용이 들기 때문에, 성능 민감한 코드에서는 ARC가 많이 호출되지 않도록 설계하는 것이 중요합니다.
  • 값 타입(struct)을 활용하거나, 약한 참조를 적절히 사용하면 성능이 개선될 수 있습니다.
 
저작자표시 비영리 동일조건 (새창열림)

'App Development > Swift' 카테고리의 다른 글

Swift의 매개변수(parameter) 정리하기  (0) 2024.11.30
Swift에서의 completion  (0) 2024.11.26
Swift의 Closure 란?  (0) 2024.11.25
Swift에서의 Class  (0) 2024.11.24
Swift 분기 처리 정의와 종류  (0) 2024.11.23
'App Development/Swift' 카테고리의 다른 글
  • Swift에서의 completion
  • Swift의 Closure 란?
  • Swift에서의 Class
  • Swift 분기 처리 정의와 종류
Genie Choi 지니 초이
Genie Choi 지니 초이
  • Genie Choi 지니 초이
    Genie World
    Genie Choi 지니 초이
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • Genie (3)
      • Projects (6)
      • Up-to-date learning (0)
      • App Development (10)
        • React Native (1)
        • Swift (9)
      • Marketing Tool (1)
        • Mobile Measurement Platform (1)
        • CRM Marketing (0)
      • Linux (5)
      • AWS (2)
        • EC2 (1)
        • Route 53 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Genie Choi 지니 초이
Swift의 ARC (Automatic Reference Counting)
상단으로

티스토리툴바