목록unowned (2)
study record
순환 참조(retain cycle)이란? 언제 발생하는가? 어떻게 처리해야 하는가? 순환 참조란? 순환 참조는 두 가지 이상의 객체가 서로에 대한 Strong Reference(강한 참조) 상태를 가지고 있을 때 발생하며, 순환 참조가 발생하게 되면 서로에 대한 참조가 해제되지 않기 때문에 메모리에서 유지되며 이로 인해 메모리 릭이 발생하게 된다. 이러한 메모리 누수 문제를 해결하기 위해 weak, unowned reference가 사용된다. 강한 참조 참조의 기본은 강한 참조로, 별도의 식별자를 명시하지 않으면 강한 참조를 한다. ARC가 해당 인스턴스를 해제하지 않고 유지해야 하는 명분을 제공하는 것이다. 인스턴스를 다른 인스턴스의 프로퍼티, 변수, 상수 등에 할당할 때 강한 참조를 사용하면 참조 횟..
*이 글은 책 “스위프트 프로그래밍”을 읽고 작성한 글입니다. 매번 전달할 때마다 값을 복사해 전달하는 값 타입과는 다르게 참조 타입은 하나의 인스턴스가 참조를 통해 여러 곳에서 접근하기 때문에 언제 메모리에서 해제되는지가 중요한 문제이다. 인스턴스가 적절한 시점에 메모리에서 해제되지 않으면 한정적인 메모리 자원을 낭비하게 되며, 성능의 저하로 이어지게 된다. 스위프트는 프로그램의 메모리 사용을 관리하기 위해 메모리 관리 기법인 ARC를 사용한다. ARC가 관리해주는 참조 횟수 계산은 참조타입인 클래스의 인스턴스에만 적용된다. 구조체나 열거형은 값 타입이므로 참조 횟수 계산과 무관하다. 즉, 구조체나 열거형은 다른 곳에서 참조하지 않으므로 ARC로 관리할 필요가 없다. ARC란 ARC 기능은 이름에서 알..