그동안 수없이 사용했던 캡쳐리스트에 대해 오해하고 있었던 것 같아서 다시 정리한다. 클로져를 사용할 때 같은 컨텍스트에 있는 변수들을 캡쳐리스트 없이 사용하게 되면 reference type이든, value type이든 무조건 reference로 캡쳐된다. 캡쳐리스트를 사용하면 value type은 클로져 생성 시의 값을 그대로 복사하여 value를 캡쳐할 수 있다. 단 reference type은 캡쳐 리스트를 사용해도 reference로 캡쳐가 되기 때문에 weak, unowned 를 사용하여 retain cycle을 피할 수 있도록 해야 한다. 명시하지 않으면 strong 캡쳐가 기본이다. 3번은 익히 잘 알고 있는 내용이고 1, 2번에 의하면 self가 struct 이더라도 캡쳐리스트에 명시하지 ..
캡쳐리스트
그동안 수없이 사용했던 캡쳐리스트에 대해 오해하고 있었던 것 같아서 다시 정리한다. 클로져를 사용할 때 같은 컨텍스트에 있는 변수들을 캡쳐리스트 없이 사용하게 되면 reference type이든, value type이든 무조건 reference로 캡쳐된다. 캡쳐리스트를 사용하면 value type은 클로져 생성 시의 값을 그대로 복사하여 value를 캡쳐할 수 있다. 단 reference type은 캡쳐 리스트를 사용해도 reference로 캡쳐가 되기 때문에 weak, unowned 를 사용하여 retain cycle을 피할 수 있도록 해야 한다. 명시하지 않으면 strong 캡쳐가 기본이다. 3번은 익히 잘 알고 있는 내용이고 1, 2번에 의하면 self가 struct 이더라도 캡쳐리스트에 명시하지 ..
2023.11.17