스위프트 배우기 Swift Strong Reference & Weak Reference

스위프트 배우기 Swift Strong Reference & Weak Reference

스위프트 배우기 이번 글에서는 Swift Strong Reference와 Weak Reference의 차이에 대해 알아보자. ARC(Automatic Reference Counting)은 생성된 객체가 참조되는 수를 말한다. 

예를 들어, 

let x = Person() 

위와 같이 객체가 생성된 후 x라는 상수에 할당된 경우 ARC는 1이 된다. x라는 상수가 객체를 참조하고 있기 때문이다. 

그리고 위에서 ARC에 더해진 Reference는 Strong Reference이다. 어떤 객체가 생성되고 그 객체에 Strong Reference가 있다면 이 객체는 메모리에 존재한다. 

반면 Weak Reference는 메모리에 존재치 않는다. Weak Reference는 객체를 참조해서 사용할 수 있도록 하는 기능은 동일하지만 ARC에 포함되지 않으며 객체를 메모리에 보관하지 않는다. 

특히 스위프트에서는 Weak Reference는 항상 Optional형이다. 왜냐하면 참조된 객체가 할당이 해제될 때, Weak Reference는 자동 nil값이 설정된다. 이를 auto-zeroing이라고 부른다. 

auto-zeroing은 더 이상 존재하지 않는 객체에 대한 참조 주소를 저장하는 잠재적 위험성으로부터 예방해주는 방법이다. 

스위프트 배우기 Swift Strong Reference & Weak Reference”에 2 생각들

답글 남기기