Swift
Unowned?
JoonSwift
2021. 2. 28. 19:10
Unowned?
CoreData를 공부하면서 많은 클로저에 아래와 같은 형식으로 쓰는것을 보고 unowned에 대해서 찾아보게 되었습니다.
{ [unowned self] 변수 in
}
Unowned variables는 weak variables와 소유권(ownership)이 없는 상태에서 데이터를 참조할 수 있는 방법을 제공하는 점에서 유사한 면이 있습니다.
그러나, weak variables같은 경우에는 nil이 될 수 있습니다. 반면에 unowned variables는 initialized되고 나면, nil이 될 수 없습니다. 즉, optional unwrapping을 걱정할 필요가 없다는 의미입니다.
그렇다면 자주 쓰이는 형식인 위의 코드에 클로저 내부에 있는 [unowned self]의 의미는 무엇일까?
나는 이 closure 내부에서 self를 참조하고 싶지만, 소유하고싶지는 않다! 라는 의미로 해석할 수 있겠습니다!
그럼 weak를 사용해도 상관없지 않을까?
weak를 사용해도 잘 작동될 것입니다. 하지만 만약에 self가 nil이라면 클로저 내부에 동작이 정상적이지 않을 수 있습니다.
[참고 사이트]
www.hackingwithswift.com/example-code/language/what-does-unowned-mean