closure 3

[Swift] weak self, 어떻게 사용해야할까? (2/2)

[Swift] weak self, 어떻게 사용해야할까? (2/2) [Swift] weak self, 어떻게 사용해야할까? [Swift] weak self, 어떻게 사용해야할까? 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용 trumanfromkorea.tistory.com 앞선 글에 이어서 마저 작성해보도록 하겠습니다. GCD GCD 호출은 나중에 실행하기 위해 어딘가에 저장하지 않는 한 순환참조가 발생할 위험이 없습니다. 다음 코드와 같이 작업이 바로바로 수행되는 경우에는 [weak self] 를 사용하지 않더라도 메모리 누수가 발생하지 않을 것입니다. func nonLea..

iOS 개발/Swift 2022.10.23

[Swift] weak self, 어떻게 사용해야할까? (1/2)

[Swift] weak self, 어떻게 사용해야할까? (1/2) 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용하는 경우 self 를 사용해야 한다는 경고창을 한 번쯤은 보신적이 있으실겁니다. 저는 위와 같은 상황을 겪을때마다 별 생각 없이 self 를 앞에 붙여주었습니다. 시간이 지나 self 는 해당 클로저를 품고있는 객체를 강하게 참조한다는 것을 알게 되었고, [weak self] 를 이용하다는 것이 안전하다고 하기에 그렇게 사용하고 있었습니다. 하지만 이런 경우 self 가 약하게 참조되기 때문에 옵셔널 체이닝을 해주거나, guard let 구문을 이용하여 바인딩 해줘..

iOS 개발/Swift 2022.10.23

[Swift] 클로저 (Closures)

Closure 란? 사용자의 코드 안에서 전달되어 사용할 수 있는 로직을 가진 코드 블럭 1급 객체의 역할을 할 수 있음 1급 객체란 전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며 함수의 리턴값이 될 수도 있음 함수 또한 클로저의 한 형태로, 이름이 있는 클로저 참조 타입 Closure 의 형태 전역 함수는 이름을 가지고 어떠한 값도 캡쳐하지 않는 클로저 중첩 함수는 이름을 가지고 둘러싼 함수로부터 값을 캡쳐할 수 있는 클로저 클로저 표현식은 주변 컨텍스트에서 값을 캡쳐할 수 있는 경량 구문으로 작성된 이름이 없는 클로저 Closure Expressions 클로저 표현식 (Closure Expressions) 은 간단하고 집중적인 구문으로 인라인 클로저를 작성하는 방법입니다...

iOS 개발/Swift 2022.04.22