BOID

[swift] ARC란? -HoonIOS 본문

swift 시작기

[swift] ARC란? -HoonIOS

HoonIOS 2021. 3. 30. 10:51

안녕하세요, HoonIOS입니다 :)

이번에는 ARC에 대해 포스팅을 하려고 합니다 

 

ARC란?

- 애플 문서에 ARC는 스위프트에서 앱의 사용하는 메모리를 추적하고 관리할 때 사용하는 것이라고 적혀있습니다.

 

ARC란?

- Automatic Reference Counting의 약자를 따 ARC라고 불리는 이것은 해석 그대로 자동으로 참조관계를 카운팅 하는 것입니다.

- 스위프트 프로그래밍의 메모리 사용을 관리하기 위하여 사용하는 메모리 관리기법입니다.

- 참조 관계를 계산하는 방법으로 참조 타입인 클래스에서만 적용이 됩니다, 열거형 구조체는 값 타입이므로 ARC로 관리를 할 필요가 없습니다.

- ARC의 방식은 더 이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작을 합니다.

- ARC는 인스턴스가 언제 메모리에서 해제되어야 할지 컴파일과 동시에 결정을 합니다.
( 즉, 컴파일과 동시에 참조 카운팅이 시작이 됩니다. )

- ARC는 인스턴스가 중간에 메모리에서 해제가 되지 않도록 계속해서 인스턴스 참조 여부를 추적, 카운팅을 합니다.

- 다른 인스턴스의 변수, 상수 등 어느 적어도 한 곳에서 인스턴스를 참조한다면 ARC가 인스턴스를 해제하면 안 됩니다. 따라서 인스턴스를 메모리에 유지시키려면 참조하고 있다는 명분을 ARC에 제공을 해야 합니다.

 

* 장점

  - 알아서 자동으로 메모리를 관리해주는 방식이므로, 개발자가 메모리 관리에 신경을 덜 쓸 수 있어서 편리합니다.

  - 컴파일 동시에 해제 시점이 정해 지므로 언제 해제가 될지 예측을 할 수 있습니다.

  - 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있기 때문에 시스템 자원을 추가할 필요가 없습니다.

 

다음 포스팅(클릭)에는 ARC와 강한 참조의 관계와 강한참조의 단점인 강한 순환 참조, 이 대책으로 약한 참조, 미소유 참조에 대해 알아보겠습니다.

반응형
Comments