[swift] 순환참조

Jeff·2024년 12월 10일
3

오늘은 간단하게 순환참조에 대해서 알아보자

A 가 B 를 참조하고 (A→B),
B 가 A 를 참조해서 (B→A), 서로가 서로를 참조하는 상황을 순환 참조라고 한다.
일반적으로 순환 참조는 메모리 누수를 발생시키는 대표적인 사례이다.
아래 예시를 보고 순환 참조 개념을 이해해보죠.

class Person {
    var pet: Dog?
    init() {
        print("Person 클래스 생성")
    }
    deinit {
        print("Person 클래스 소멸")
    }
}

class Dog {
    var owner: Person?
    init() {
        print("Dog 클래스 생성")
    }
    deinit {
        print("Dog 클래스 소멸")
    }
}

// person rc = 1
var person: Person? = Person()
// dog rc = 1
var dog: Dog? = Dog()

// dog rc = 2
person?.pet = dog
// person rc = 2
dog?.owner = person

// person rc = 1
person = nil
// dog rc = 1
dog = nil
profile
기본에 충실한 개발자가 목표!

0개의 댓글