[swift] weak 참조와 nil 처리
Swift에서 메모리 누수를 방지하기 위해 weak 참조를 사용하는 것은 중요합니다. 특히 순환 참조가 발생할 수 있는 경우에는 더욱 중요합니다.
weak 참조란?
weak 참조는 참조하는 객체를 강하게 유지하지 않고 참조할 수 있는 객체가 더 이상 존재하지 않으면 자동으로 nil로 설정됩니다.
weak var weakRef: MyClass?
위의 코드에서 weak
키워드를 사용하여 weakRef
를 선언했습니다. 이렇게 선언된 weak 참조는 참조하는 객체의 수명과 관계없이 자동으로 nil이 될 수 있습니다.
weak 참조의 활용
weak 참조는 순환 참조 문제를 해결하기 위해 주로 활용됩니다. 부모-자식 객체 간에 서로를 강하게 참조할 때 발생하는 순환 참조 문제를 해결하기 위해 weak 참조를 활용할 수 있습니다.
class Parent {
weak var child: Child?
}
class Child {
weak var parent: Parent?
}
위의 코드에서 Parent
와 Child
클래스가 서로를 참조하는데, weak
키워드를 통해 순환 참조 문제를 해결할 수 있습니다.
nil 처리
weak 참조는 참조하는 객체가 더는 존재하지 않을 수 있기 때문에 nil 처리를 꼭 해주어야 합니다. Optional binding 또는 옵셔널 체이닝을 통해 nil 처리를 해주어야 합니다.
if let value = weakRef {
// value를 사용
} else {
// weak 참조의 값이 nil일 때 처리
}
weakRef
가 nil이 아닌 경우에만 코드를 수행하도록 Optional binding을 사용하거나 옵셔널 체이닝을 통해 nil 처리를 해주어야 합니다.
weak 참조와 nil 처리를 올바르게 다루어 메모리 누수를 방지할 수 있습니다.
참고 자료: Apple Developer Documentation