[swift] 메모리 누수와 ARC

ARC (Automatic Reference Counting)는 Swift에서 메모리 관리를 자동으로 처리해주는 기술입니다. 하지만 ARC를 사용하더라도 메모리 누수가 발생할 수 있는데, 이는 강한 순환 참조 (Strong Reference Cycles)로 인해 발생합니다.

강한 순환 참조는 두 개 이상의 강한 참조가 서로를 가리키고 있을 때 발생합니다. 이 경우 해당 객체들은 메모리에서 해제되지 않고 계속 유지됩니다.

이를 해결하기 위해선 약한 참조 (Weak Reference)미소유 참조 (Unowned Reference) 을 사용할 수 있습니다.

약한 참조 (Weak Reference)

약한 참조는 객체에 대한 참조를 유지하지만, 그 객체의 수명주기를 직접적으로 연장하지 않습니다. 만약 해당 객체가 메모리에서 해제된다면, 약한 참조는 자동으로 nil로 초기화됩니다.

weak var weakReference: MyClass?

미소유 참조 (Unowned Reference)

미소유 참조는 객체에 대한 간접적인 참조를 제공하지만, 약한 참조와는 다르게 해당 객체가 계속 유지되는 것을 보장합니다.

unowned let unownedReference: MyClass

ARC 및 강한 순환 참조에 대한 더 자세한 내용은 Swift 공식 문서를 참고하세요.

메모리 누수 문제를 해결하기 위해 약한 참조와 미소유 참조를 적절히 활용하는 것이 중요합니다. ARC는 메모리 관리를 자동으로 처리해주지만, 개발자가 메모리 관리에 대한 이해와 주의가 필요합니다.