순환 참조에 대하여 설명하시오.
Opened this issue · 3 comments
tmfrlrkvlek commented
순환 참조에 대하여 설명하시오.
sustainable-git commented
-
Swift에서 순환 참조란 두 가지 이상의 객체가 서로에 대한 강한 참조 상태를 가지고 있어 Memory에서 해제되지 않는 상태를 말합니다.
-
Swift는 Memory를 자동으로 관리하기 위해 ARC를 사용하고 있습니다. ARC는 참조 횟수를 기반으로 한 방식으로, 참조 횟수가 0이 되면 Memory가 해제됩니다.
-
하지만, 서로 강한 참조를 하고 있는 경우에는 참조 횟수가 0이 될 수 없으므로, Memory가 해제되지 않는 일이 발생할 수 있습니다.
-
번외로 순환 참조는 참조하는 대상이 서로 물려있어 참조할 수 없게 되는 현상을 말하기도 합니다.
- ex) A = B, B = A
tmfrlrkvlek commented
- 순환 참조는 두가지 이상의 객체가 서로를 강하게 참조하는 상태를 의미합니다.
- Swift에서는 약한 참조(weak), 무소유 참조(unowned) 등의 키워드를 통해 해결할 수 있습니다.
inuinseoul commented
ARC는 두 객체가 서로를 참조할 경우 순환참조가 발생하면서 변수가 메모리에서 해제되지 않을 위험이 있습니다. 이를 해결하기 위해 weak, unowned 로 서로간의 참조를 약하게 만들기도 합니다.