lunchScreen/Interview_Questions

순환 참조에 대하여 설명하시오.

Opened this issue · 3 comments

순환 참조에 대하여 설명하시오.
  • Swift에서 순환 참조란 두 가지 이상의 객체가 서로에 대한 강한 참조 상태를 가지고 있어 Memory에서 해제되지 않는 상태를 말합니다.

  • Swift는 Memory를 자동으로 관리하기 위해 ARC를 사용하고 있습니다. ARC는 참조 횟수를 기반으로 한 방식으로, 참조 횟수가 0이 되면 Memory가 해제됩니다.

  • 하지만, 서로 강한 참조를 하고 있는 경우에는 참조 횟수가 0이 될 수 없으므로, Memory가 해제되지 않는 일이 발생할 수 있습니다.

  • 번외로 순환 참조는 참조하는 대상이 서로 물려있어 참조할 수 없게 되는 현상을 말하기도 합니다.

    • ex) A = B, B = A
  • GC, ARC의 개념

  • Strong, Weak 참조 방식에 대해 설명하시오

  • ARC란 무엇인지 설명하시오

  • 순환 참조는 두가지 이상의 객체가 서로를 강하게 참조하는 상태를 의미합니다.
  • Swift에서는 약한 참조(weak), 무소유 참조(unowned) 등의 키워드를 통해 해결할 수 있습니다.

참고) https://bongcando.tistory.com/21

ARC는 두 객체가 서로를 참조할 경우 순환참조가 발생하면서 변수가 메모리에서 해제되지 않을 위험이 있습니다. 이를 해결하기 위해 weak, unowned 로 서로간의 참조를 약하게 만들기도 합니다.