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
'Swift' 카테고리의 다른 글
Type Methods (static func & class func) (0) | 2022.03.23 |
---|---|
Sequence (0) | 2022.01.28 |
Dispatch(2) : Sync / Async / main / global (0) | 2021.01.13 |
Dispatch(1) : What is Dispatch and Dispatch Queue? (0) | 2021.01.13 |
Parse JSON with Swift (0) | 2020.12.23 |