대표 패턴 1: Parent ↔ Child 상호 strong
final class Parent {
var child: Child?
}
final class Child {
var parent: Parent? // strong이면 순환 가능
}역참조는 보통 소유 관계가 아니므로 `weak`로 끊는다.
retain cycle은 ARC가 못 푸는 구조 문제다. strong reference가 원형으로 연결되면 참조 수가 0이 되지 않아 객체가 영원히 해제되지 않는다.
기록 없음
final class Parent {
var child: Child?
}
final class Child {
var parent: Parent? // strong이면 순환 가능
}역참조는 보통 소유 관계가 아니므로 `weak`로 끊는다.
final class VM {
var onDone: (() -> Void)?
func bind() {
onDone = {
self.finish() // self 강한 캡처
}
}
func finish() {}
}`self`가 `onDone`을 소유하고, 클로저가 다시 `self`를 잡아 순환이 된다.