WooKoo Blog

물과 같이

Weak 2

Swift - weak, unowned 차이

오늘은 강한 순환 참조가 발생했을 때 해결하기 위한 방법으로 weak, unowned를 사용하는 것을 알고 있었는데 weak?과 unowned의 차이에 대해 좀 더 자세하게 알아보려고한다. 평소에 weak은 nil을 반환하고 unowned는 정말 확실할 때 사용하는데 앱이 크래쉬나서 사용을 안하는걸 추천하는걸로 알고 있었지만 존재하는 이유가 있을 것 아닌가!? 그래서 한번 정리해보려고한다. weak 약한 참조! - 참조하는 인스턴스를 약하게 유지하는 참조 다른 인턴스의 생명주기가 짧을 때 사용 다들 아시다시피 nil값으로 변경 될 수 있기때문에 옵셔널 타입의 변수로 선언되어야함!! Unowned 미소유 참조! - weak과 마찬가지로 약한 참조 미소유 참조는 다른 인스턴스와 같은 생명 주기를 가지거나 더..

개발/개발 2020.08.20

[iOS] - 강한참조 약한 참조(Strong capture and weak capture)

Hacking with swift 를 진행하다가 나온 내용이라 부족함을 느껴 따로 공부해보는 시간을 갖겠다. 먼저 Swift ARC(Auto Reference Counting) 이라고해서 컴파일 시점에서 다시 사용할 메모리 소스들을 자동으로 삽입해준다. 가비지 컬렉터와 달리 참조 사이클을 자동으로 처리해주지 않기 때문에 메모리 누수가 발생 할 수도 있다. 서로 다른 객체가 서로를 참조하면 순환 참조가 계속되 메모리가 해제되지않고 메모리 누수가 발생한다. 이것을 해결하기 위한 것이 weak 과 unowned이 있다. 이 차이점은 weak키워드는 optional에 사용할 수 있으며, unowned는 non-optional인 경우에만 사용 가능합니다. 따라서 unowned는 옵셔널 추출이 필요하지 않지만, 참..

개발/개발 2020.05.08