-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
closure에 대하여 설명해주세요. #29
Comments
일반적으로 클로저는 또한, 클로저는 일급 객체로서 함수처럼 변수에 할당되거나 다른 함수에 전달, 반환될 수 있습니다. 이런 특성 덕분에 고차 함수나 비동기 작업에서 유용하게 사용됩니다.
꼬리질문
탈출클로저는 외부 변수 혹은 상수에 값을 저장할 수 있는 큰 특징이 있습니다. 때문에 함수가 종료된 뒤 실행되는 시간이 오래걸리는 비동기 네트워크 작업들을 탈출 클로저 콜백 함수를 통해 주로 구현합니다. 이런 비동기 작업을 탈출 클로저가 아닌 non-escaping closure에서 수행한다면 응답이 수신되기 전에 클로저가 실행되는 문제가 발생하여 원하지 않는 방식으로 동작할 수 있습니다. 또한 탈출 클로저는 함수가 종료된 이후에도 실행을 보장하기 때문에 지속적으로 캡처 변수를 참조하여 self를 강한 참조하는 방식의 순환참조를 통해 메모리 누수 문제가 발생할 수 있기 때문에 주의해야 합니다.
|
클로저는 어떠한 기능을 하는 코드 블럭을 의미합니다. 클로저는 스코프 내에서 외부 변수를 사용할 경우 캡쳐를 통해 외부 변수의 reference를 참조하는 방식으로 동작합니다. |
🙋🏻 답변클로저는 간단히 표현하자면 함수처럼 사용할 수 있는 코드 블록입니다. 함수와 유사하게 특정 기능을 하는 코드 블럭을 만들어 반복적인 기능 수행을 할 수 있게 해주지만, 함수와는 다르게 이름 없이 사용도 가능해서 익명함수라고도 불립니다. 또한 클로저는 일급 객체로 사용이 가능합니다. 함수의 파라미터로 전달해주거나 반환타입으로 사용할 수 있습니다. 이 때 함수의 파라미터로 전달해주는 클로저에 escaping 키워드를 붙여 사용도 가능한데요. 탈출클로저라고 불리는 이스케이핑 클로저는 주로 비동기 작업에서 많이 사용됩니다. 작업이 끝나면 클로저를 통해 결과를 전달해줄 수 있기 때문입니다. 클로저는 다양한 상황에서 활용이 되지만 사용시 주의해야 되는 부분도 존재합니다. 클로저는 외부의 값이나 참조를 할 때 캡처를 하게 되는데 이 때 기본적으로 강한 참조로 캡처를 하기 때문에 순환 참조 문제가 발생할 수 있습니다. 🏷️ 키워드
|
클로저보통 우리가 클로저라고 부르는 것은 Unnamed Closure로 익명함수를 뜻한다. 클로저의 참조 캡쳐클로저는 기본적으로 참조 타입으로 힙에 값을 저장한다. 이 때 필요한 인자들을 '캡쳐'해서 가져가게 되는데 기본적인 캡쳐는 참조 캡쳐이다. 클로저가 참조된 캡쳐 값을 수정하면 외부의 원본에도 영향을 주게 된다. 클로저의 값 캡쳐(캡쳐리스트)참조 캡쳐말고 값 캡쳐를 위해 사용하는 것이 '캡쳐리스트'이다. |
No description provided.
The text was updated successfully, but these errors were encountered: