[swift] weak self와 unowned self 사용

앱 개발을 하면서 메모리 누수를 방지하고, 강한 순환 참조를 피하기 위해 weak selfunowned self 두 가지를 주로 사용합니다.

weak self

weak self는 참조 대상이 해제될 수 있는 (즉, optional) weak한 참조로, 순환 참조(circular reference)를 방지하는 데 사용됩니다. 보통 클로저에서 주로 사용됩니다.

someAsyncOperation { [weak self] result in
    guard let self = self else { return }
    // self를 안전하게 사용
}

unowned self

unowned self는 참조 대상이 항상 유효하다고 가정하는 unowned 참조로, non-optional입니다. 일반적으로 weak 참조가 nil이 될 수 있는 시나리오가 확실하지 않을 때 사용됩니다.

someClosure { [unowned self] in
    // self를 안전하게 사용
}

보통 weak selfunowned self는 옵셔널 체이닝뿐만 아니라 개발자가 메모리 관리를 더욱 신중하게 다룰 수 있도록 하는데 유용합니다.

참고: The Swift Programming Language - Automatic Reference Counting

이렇게, Swift에서 weak selfunowned self를 사용함으로써 메모리 관리 및 순환 참조 문제를 더 효과적으로 다룰 수 있습니다.