미소유 참조(Unowned References)란? "미소유 참조(Unowned References)"란 Swift에서 객체간의 참조 관계를 표현하는 방법 중 하나입니다. 이는 참조 대상의 참조 카운트를 증가시키지 않고, 참조 대상이 메모리에서 사라지더라도 자동으로 nil로 변하지 않는 특성을 가지고 있습니다. 이러한 점은 약한 참조(Weak References)와 차이점을 가집니다. 그러나 미소유 참조는 반드시 값이 존재한다는 가정하에 사용되므로, 옵셔널이 아닌 변수에 선언됩니다. 이는 미소유 참조가 메모리에서 해제된 인스턴스를 참조하려고 하면 런타임 오류를 발생시키기 이유이기도 합니다. 따라서 미소유 참조를 사용할 때에는 참조 대상이 항상 존재하고, 참조하는 변수나 상수의 수명이 참조 대상의 수명보다..
약한 참조(Weak Reference)란 무엇인가? 프로그래밍에서 메모리 관리는 중요한 주제입니다. 특히, Swift에서는 'weak'라는 키워드를 통해 약한 참조를 생성하며, 이는 메모리 관리에 중요한 역할을 합니다. 그렇다면, 'weak' 또는 약한 참조는 어떤 개념인지, 어떻게 활용하는 것인지 살펴보겠습니다. 'weak'는 Swift 언어에서 약한 참조를 생성하는 키워드입니다. 이는 순환 참조를 방지하는데 활용되며, 참조하는 객체가 메모리에서 해제되면 자동으로 nil이 됩니다. 이렇게 함으로써 참조 카운트가 0이 되지 않아 메모리에서 해제되지 않는 순환 참조 문제를 해결할 수 있습니다. 약한 참조를 활용한 코드 예시 및 분석 이제는 약한 참조를 활용한 실제 코드를 통해 자세히 살펴보겠습니다. 이를 ..
순환 참조란 무엇인가? 순환 참조는 간단히 말해서, 두 개 이상의 클래스 인스턴스가 서로를 '놓지 않는' 상황을 말합니다. 이 때문에, 인스턴스들은 메모리에서 해제되지 않게 됩니다. 스위프트에서는 메모리 관리를 위해 ARC(Automatic Reference Counting)라는 시스템을 사용합니다. ARC는 이름에서 알 수 있듯이, 인스턴스가 얼마나 많이 참조되는지 세어주는 역할을 합니다. 만약 이 참조 횟수가 0이 되면, 해당 인스턴스는 더 이상 필요 없다고 판단되어 메모리에서 해제됩니다. 그러나 순환 참조가 발생한 경우, 두 인스턴스는 서로를 계속 강하게 참조하고 있기 때문에 참조 횟수가 절대 0이 될 수 없습니다. 그 결과 이들 인스턴스는 메모리에서 해제되지 못하고 계속 남아 있게 됩니다. 이런 ..