BOID
[swift] ARC란? -HoonIOS 본문
안녕하세요, HoonIOS입니다 :)
이번에는 ARC에 대해 포스팅을 하려고 합니다
ARC란?
- 애플 문서에 ARC는 스위프트에서 앱의 사용하는 메모리를 추적하고 관리할 때 사용하는 것이라고 적혀있습니다.
- Automatic Reference Counting의 약자를 따 ARC라고 불리는 이것은 해석 그대로 자동으로 참조관계를 카운팅 하는 것입니다.
- 스위프트 프로그래밍의 메모리 사용을 관리하기 위하여 사용하는 메모리 관리기법입니다.
- 참조 관계를 계산하는 방법으로 참조 타입인 클래스에서만 적용이 됩니다, 열거형 구조체는 값 타입이므로 ARC로 관리를 할 필요가 없습니다.
- ARC의 방식은 더 이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작을 합니다.
- ARC는 인스턴스가 언제 메모리에서 해제되어야 할지 컴파일과 동시에 결정을 합니다.
( 즉, 컴파일과 동시에 참조 카운팅이 시작이 됩니다. )
- ARC는 인스턴스가 중간에 메모리에서 해제가 되지 않도록 계속해서 인스턴스 참조 여부를 추적, 카운팅을 합니다.
- 다른 인스턴스의 변수, 상수 등 어느 적어도 한 곳에서 인스턴스를 참조한다면 ARC가 인스턴스를 해제하면 안 됩니다. 따라서 인스턴스를 메모리에 유지시키려면 참조하고 있다는 명분을 ARC에 제공을 해야 합니다.
* 장점
- 알아서 자동으로 메모리를 관리해주는 방식이므로, 개발자가 메모리 관리에 신경을 덜 쓸 수 있어서 편리합니다.
- 컴파일 동시에 해제 시점이 정해 지므로 언제 해제가 될지 예측을 할 수 있습니다.
- 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있기 때문에 시스템 자원을 추가할 필요가 없습니다.
다음 포스팅(클릭)에는 ARC와 강한 참조의 관계와 강한참조의 단점인 강한 순환 참조, 이 대책으로 약한 참조, 미소유 참조에 대해 알아보겠습니다.
'swift 시작기' 카테고리의 다른 글
[swift] 미소유 옵셔널 참조와 암시적 추출 옵셔널 프로퍼티 - HoonIOS (0) | 2021.04.01 |
---|---|
[swift] 강한참조, 강한참조 순환, 약한참조, 미소유참조- HoonIOS (0) | 2021.03.30 |
[swift] 스위프트에서 사용하는 패턴(열거형 케이스 패턴, 옵셔널 패턴, 타입 캐스팅 패턴) - HoonIOS (0) | 2021.03.26 |
[swift] 스위프트에서 사용하는 패턴(와일드카드 패턴, 식별자 패턴, 바인딩 패턴, 튜플 패턴) - HoonIOS (3) | 2021.03.26 |
[swift] 타입 중첩이란? (0) | 2021.03.23 |