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

'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