iOS(3)
-
unowned self vs weak self (캡쳐 리스트)-(1)
Swift로 개발하면서 클로저 안에서 [weak self]나 [unowned self]를 쓸 경우가 많습니다. 메번 클로저에 넣어 주기는 하지만 왜 쓰이는지, 언제 weak를 쓸지 unowned를 쓸지 제대로 모르고 쓰는 경우가 많았던 것 같습니다. 그래서 이번 기회에 제대로 알아보고 적절히 사용하기 위해 알아보았습니다. weak와 unowned는 강한 순환 참조(Strong Reference Cycle)발생을 막기 위해 사용됩니다. 둘 다 레퍼런스 카운팅을 하지 않기 때문이죠. [weak self]와 [unowned self] 또한 클로저의 강한 순환 참조를 막기 위해 사용되는 캡쳐 리스트(Capture List)입니다. 캡쳐 리스트란?(Capture List) 캡쳐리스트는 클로저 안에서 한개 이상의 ..
2021.01.11 -
프로퍼티 래퍼란? (Property Wrapper)
프로퍼티 래퍼란? SwiftUI를 공부하면서 @State, @Binding 등을 쓰면서 프로퍼티 래퍼가 존재하는지 알게 되었습니다. 그래서 어떤건지는 알고 사용해야할 것 같아서 SwiftUI를 공부하면서 같이 알아봤습니다. A property wrapper adds a layer of separation between code that manages how a property is stored and the code that defines a property. Swift 공식문서에는 프로퍼티 래퍼를 다음과 같이 설명하고 있습니다. 번역해보자면 프로퍼티 래퍼는 프로퍼티가 저장되는 방식을 관리하는 코드와 프로퍼티가 정의되는 코드 사이에 분리된 계층을 추가해줍니다. 프로퍼티 래퍼를 정의할 때, manageme..
2020.12.09 -
클로저 캡쳐란? (Closure Capture)
Swift코드를 작성하다 보면 [unowned self]나 [weak self]를 사용할 때가 많습니다. unowned와 weak는 강한 순환 참조(Strong Reference Cycle)을 방지할 때 주로 사용하는 키워드인데 클로저에서는 어떤 포인트에서 강한 순환 참조가 일어나는지 항상 궁금했습니다. 매번 미루다가 이제야 알아보게 되었네요...ㅎㅎ 자! 이제 클로저 안에서 강한 순환 참조가 왜 일어나는지 알아보겠습니다. 그 전에 먼저 알아야할 개념이 있습니다. 바로 클로저 캡처입니다. 클로저 캡처란? 클로저는 정의된 context내에 있는 상수나 변수에 대한 참조를 캡처(Capturing by reference)하고 저장할 수 있습니다. 캡처를 하면 원본값이 사라져도 클로저 body 안에서는 그 값을..
2020.07.25