본문 바로가기

memory leak

(2)
[iOS] 강한 참조 사이클 (순환 참조) 해결하기 2편 두 인스턴스가 서로를 참조할 경우 강한 참조 사이클이 발생하고 인스턴스가 메모리에서 정상적으로 해제되지 않는 것을 강한 참조 사이클 해결하기 1탄에서 확인하였습니다. 강한 참조 사이클(Strong Reference Cycle)이 발생하는 문제를 해결하기 위해 약한(weak) 참조와 비소유(unowned) 참조로 해결하였죠. 클로저(Closure)에서도 강한 참조 사이클이 발생할 수 있습니다. 클로저가 인스턴스를 캡처하고 인스턴스가 클로저를 강한 참조로 저장하고 있다면 인스턴스는 메모리에서 정상적으로 해제되지 않습니다. 이 경우에도 약한 참조나 비소유 참조를 통해 해결할 수 있습니다. 강한 참조 사이클이 발생하는 경우를 예시를 통해 살펴보겠습니다. class Car { var totalDrivingDist..
[iOS] 강한 참조 사이클 (순환 참조) 해결하기 1편 인스턴스를 사용하지 않는데도 메모리에서 해제 되지 않으면 메모리 누수(Memory Leak)가 발생합니다. 강한 참조 사이클(Strong Reference Cycle)에 의해 발생할 수 있으며 약한(Weak) 참조와 비소유(Unowned) 참조를 통해 해결할 수 있습니다. 강한 참조에 대한 자세한 설명은 ARC 란? 을 참고해주세요! 강한 참조 사이클은 순환 참조(Retain Cycle)라고도 불립니다. 예시를 통해 강한 참조 사이클이 발생하는 경우를 먼저 살펴보도록 하겠습니다. class Person { var name = "John" var apartment: Apartment? deinit { print("Person deinit") } } class Apartment { var address: S..