WooKoo Blog

물과 같이

개발/개발

Swift - weak, unowned 차이

WooKoo 2020. 8. 20. 15:18

오늘은 강한 순환 참조가 발생했을 때 해결하기 위한 방법으로

weak, unowned를 사용하는 것을 알고 있었는데

weak?과 unowned의 차이에 대해 좀 더 자세하게 알아보려고한다.

 

평소에 weak은 nil을 반환하고 unowned는 정말 확실할 때 사용하는데 앱이 크래쉬나서 사용을 안하는걸 추천하는걸로 알고 있었지만

존재하는 이유가 있을 것 아닌가!? 그래서 한번 정리해보려고한다.

 

weak 약한 참조! - 참조하는 인스턴스를 약하게 유지하는 참조

다른 인턴스의 생명주기가 짧을 때 사용

 

다들 아시다시피 nil값으로 변경 될 수 있기때문에 옵셔널 타입의 변수로 선언되어야함!!

 

 

Unowned 미소유 참조! - weak과 마찬가지로 약한 참조

 

미소유 참조는 다른 인스턴스와 같은 생명 주기를 가지거나 더 긴 생명 주기를 가질 때 사용!

nil로 설정하지 않아서 상수로 선언